我的问题类似于other posted question: 但我只需要能够用另一个文件中的代码替换两个html注释(...)之间的代码。
例如,在aSample.htm中,我想替换“test1”注释之间的代码:
<!-- test1 Begin -->
<link rel="stylesheet" type="text/css" href=
"http://www.aServer.com/template/style.css">
<!-- test1 End -->
使用其他文件的代码(例如template.txt):
<!-- Changes Begin -->
<link rel="stylesheet" type="text/css" href=
"/srv/anotherServer.com/htdocs/api/test/cfHtmlHeadTest.css">
<!-- Changes End -->
到目前为止,我的脚本将从给定的IP地址($ ip)中获取所有html文件,并为它们创建一个新目录。这是我尝试使用的替换基于我搜索的另一个网站:
#!/bin/bash
TEST_FILE=$(cat./template.txt)
TARGETFILE='app/HtmlPages/"$ip-$currentTime"/"$ip"/index.php/art/*.htm'
STARTTAG="test1 Begin"
ENDTAG="test1 End"
# stuff
# Replaces all htm files' content between $START-/ENDTAG by inserting line from template.txt
echo "css replacement test..."
sed -e "s&\(<\!\-\-\$STARTTAG\-\->\).*\(<\!\-\-\$ENDTAG\-\->\)&\1$TEST_FILE\2&"
在添加此更改之前,代码按预期运行。然而,当我进行更改时,系统会冻结或需要很长时间才能处理,我不希望这么小的变化。我已经尝试了其他sed命令(例如this site的变种),但我得到了一个“未知的选项”......“
我是否遗漏了某些东西,或者有人知道系统在做什么吗?
答案 0 :(得分:0)
使用sed的r
命令在适当的时间读取文件的内容。
$ cat aSample.htm
foo
<!-- test1 Begin -->
<link rel="stylesheet" type="text/css" href=
"http://www.aServer.com/template/style.css">
<!-- test1 End -->
bar
$ cat template.txt
<!-- Changes Begin -->
<link rel="stylesheet" type="text/css" href=
"/srv/anotherServer.com/htdocs/api/test/cfHtmlHeadTest.css">
<!-- Changes End -->
$ sed '
/<!-- test1 End -->/ r template.txt
/<!-- test1 Begin -->/,/<!-- test1 End -->/ d
' aSample.htm
foo
<!-- Changes Begin -->
<link rel="stylesheet" type="text/css" href=
"/srv/anotherServer.com/htdocs/api/test/cfHtmlHeadTest.css">
<!-- Changes End -->
bar