如何用SED命令替换html标签?

如何用SED命令替换html标签?

我正在尝试用新内容以及标签行替换下面的标签。有没有一种方法可以使用 sed 或任何其他选项来更改标签及其值?

原始html标签(内部th>标签):

th> file-109 /th>
th> file-209 /th>

将此 html 标签更改为:

th>S.No  Name /th>
th>S.No  Name /th>

我尝试了下面的方法,但这不起作用。它的投掷错误。

sed "s/th>file-1.*/'th>`head -5 file-109 | tail -1`/th>'/g" Diff.html
sed "s/th>file-2.*/'th>`head -5 file-209 | tail -1`/th>'/g" Diff.html

答案1

sed 可以使用许多不同的字符作为分隔符;您选择了 /,但 / 也出现在您要替换的字符串中。因此,我会选择:

sed 's:th>file-[0-9]+ /th>:th>S.No name /th>:g' yourfile

但请注意,如果您想要处理比这更复杂的内容,您应该解析 HTML - 而不是使用正则表达式。

答案2

真的不知道它需要有多强大,但尝试 sed -e "s/file-[^/ ]*/S.No Name/g" Diff.html直接使用编辑文件 sed -ie

答案3

perl -0777pe '
   s{ (?<=th>\s) file-\d+ (?=\s/th>) }{
      qx/sed -e "4q;d" "$&"/ =~ /.*/;
      $&;
   }xge;
' Diff.html

如果我理解正确,那么您希望文件中 th> 和 /th> 标记中包含的所有文件名File-num被刚刚选择的文件的第四行替换。

相关内容