替换html标签

时间:2010-08-19 09:25:03

标签: sed awk

我的HTML代码包含以下内容。

<TH>column1</TH><TH>column2</TH><TH>column3</TH>

我可以使用sed工具将column1替换为“Name”,将column2替换为“Surname”......

<TH>Name</TH><TH>Surname</TH><TH>City</TH>

我有shell脚本的echo语句中的列列表。

echo 'Name, Surname, City'

这三个值需要在HTML代码的相应列中替换。列数可能会更改。

2 个答案:

答案 0 :(得分:3)

您是否可以更改新列名称的输入格式,或者您是否仍然使用echo。表格标题行是按每个html文件出现一次,还是多次出现?

对于您目前的情况,这可行:

echo 'Name, Surname, City' |
awk -F'<TH>|</TH><TH>|</TH>' 'NR==1{n=split($0,a,", *");OFS="";next}/<TH>/{for(i=1; i<=n;i++)$(i+1)="<TH>"a[i]"</TH>"}1' - file.html

输出:

<TH>Name</TH><TH>Surname</TH><TH>City</TH>

请注意,当您的输入html具有不同的格式(附加或缺少换行符)时,事情会发生严重错误。如果您想要做更高级的事情,您应该使用正确的SGML解析器,而不是awksed

答案 1 :(得分:0)

将替换放入变量而不是回声,然后只需

sed 's|<TH>column1<\/TH>|<TH>Name</TH>|;s|<TH>column2</TH>|<TH>Surname</TH>|;s|<TH>column3</TH>|<TH>City</TH>|' file

注意,如果您的模式跨越多行,这不是万无一失的。但如果你需要更换的所有东西都在一条线上,那么它应该没问题。