如何在没有FQDN的情况下搜索html文件以获取css参考并添加它?

时间:2018-01-14 20:12:40

标签: html bash sed scripting

我正在尝试编写一个bash脚本,该脚本将在给定的HTML文件中进行搜索,找到是否存在没有FQDN的CSS样式引用并将其添加到内联。

例如:

我有一个包含以下代码的HTML文件:

<link rel="stylesheet" type="text/css" href="my.domain/css/main.css"; />
<link rel="stylesheet" type="text/css" href="css/main2.css" />
<link rel="stylesheet" type="text/css" href="css/wraper_page.cs " />
<link rel="stylesheet" type="text/css" href="css/Menu.Skin" />

所以我希望脚本覆盖整个文档的所有选项(忽略现有的http引用|为丢失的一个添加FQDN |请考虑&#34; .cs&#34;文件)。 而且 - 如果我想为我的FQDN使用变量?以1美元为例? 所以我按照以下方式运行脚本:&#39; ./ myscript.sh my.domain&#39;

谢谢!

2 个答案:

答案 0 :(得分:0)

这样的事情应该做:

sed -E '\|type="text/css"| s|href="(my.domain)?/?|href="my.domain/|' data

答案 1 :(得分:0)

扩展 bash + xmlstarlet 解决方案:

示例input.html文件:

<html>
<link rel="stylesheet" type="text/css" href="my.domain/css/main.css" />
<link rel="stylesheet" type="text/css" href="css/main2.css" />
<link rel="stylesheet" type="text/css" href="css/wraper_page.cs " />
<link rel="stylesheet" type="text/css" href="css/Menu.Skin" />
</html>

add_domain_to_url.sh 脚本:

#!/bin/bash

domain="$1"
xmlstarlet ed -O -L -u "//link[not(starts-with(@href, '$domain'))]/@href" -x "concat('$domain/', .)" "$2"

签名:bash add_domain_to_url.sh <domain_name> <filepath>

用法:

bash add_domain_to_url.sh "my.domain" input.html

最终input.html内容:

<html>
  <link rel="stylesheet" type="text/css" href="my.domain/css/main.css"/>
  <link rel="stylesheet" type="text/css" href="my.domain/css/main2.css"/>
  <link rel="stylesheet" type="text/css" href="my.domain/css/wraper_page.cs "/>
  <link rel="stylesheet" type="text/css" href="my.domain/css/Menu.Skin"/>
</html>