将字符添加到以特定字符串开头的行的开头和结尾

时间:2011-03-30 15:19:46

标签: command-line sed grep replace

我有很多html文件需要注释掉特定的JavaScript行:

<script src="/common/javascript/jquery/jquery.tools-1.2.4.min.js" type="text/javascript"></script>

我想通过命令行做的是在目录中搜索.htm文件:“/common/javascript/jquery/jquery.tools-1.2.4.min.js”并添加{{1到包含字符串的相应行的开头,和 <!--到最后一行。

有些文件包含-->,有些则没有,这就是为什么我想使用src值进行搜索并添加到行的开头和结尾。

感谢您的帮助。我很感激。

2 个答案:

答案 0 :(得分:1)

如果您将“整行”替换为要注释掉的整个js行,则会输出修改后的文件。

sed 's/\(that whole line\)/<<!--\1-->/' file.htm

现在只需迭代dir中的所有文件

for f in *htm; do sed 's/\(that whole line\)/<<!--\1-->/' $f > $f.new done

我会告诉你如何处理将它们移回正确的文件名。 (也许是一个新的目录?也许是mv命令?在你的情况下最好的是什么。)

答案 1 :(得分:0)

这是你想要的吗?

for f in *.htm*; do
  mv "$f" "$f.tmp"
  sed 's#^\(.*common/javascript/jquery/jquery.tools-1.2.4.min.js.*\)#<!-- \1 -->#' "$f.tmp" > "$f"
  rm "$f.tmp" ;
done