在 UNIX 中搜索并替换 HTML 二进制文件中的值

在 UNIX 中搜索并替换 HTML 二进制文件中的值

我正在尝试搜索并替换已创建的 HTML 模板中的某些值。作为一个二进制文件,到目前为止我在搜索和替换 HTML 方面一直不成功。

我需要搜索字符串 1111 并将其替换为此处的 1234。

style='mso-bookmark:_MailOriginal'><span style='color:#1F497D'>1111</span><o:p></o:p></span></p>

请建议可以使用什么命令,因为 HTML 源代码有大量的十六进制字符。

我要替换的 HTML 是https://pastebin.mozilla.org/8920460

答案1

您还可以通过用 python 编写的简单脚本来实现它:

替换.py

f = open("index.html",'r') # open file with read permissions
filedata = f.read() # read contents
f.close() # closes file
filedata = filedata.replace("1111", "1234") # replace 1111 with 1234
filedata = filedata.replace("2222", "2345") # you can add as many replace rules as u need
f = open("index.html",'w') # open the same (or another) file with write permissions
f.write(filedata) # update it replacing the previous strings 
f.close() # closes the file

然后运行:

python replace.py

答案2

样本文件test.txt

should not touch 1111
<body>
should touch 1111
</body>
should not touch 1111

使用GNU Awk 3.1.7

awk 'BEGIN {s=0};{if (/<body/) {s=1;} else if (/<\/body>/) {s=0;};if (s) {gsub(1111,1234)}};1' test.txt

结果

should not touch 1111
<body>
should touch 1234
</body>
should not touch 1111

答案3

sed(1) Stream EEditor 是一个用于(正则表达式)搜索和替换的好工具。

查看 man 1 sed

sed -e s/foo/bar/g infile > outfile

将用替换“bar”替换与正则表达式“foo”匹配的所有内容。

附言。-r如果需要在替换部分使用反向引用,请使用该标志。

相关内容