9

我有一个包含以下行的文件:

<li><b> Some Text:</b> More Text </li>

我想删除 html 标签并用</b>破折号替换标签,所以它变成这样:

Some Text:- More Text

我正在尝试使用 sed 但是我找不到正确的正则表达式组合。

4

2 回答 2

17

如果您严格想要去除所有 HTML 标签,但同时用 a替换</b>标签-,您可以用管道链接两个简单sed的命令:

cat your_file | sed 's|</b>|-|g' | sed 's|<[^>]*>||g' > stripped_file

这会将所有文件的内容传递给sed将处理替换</b>-. 然后,它的输出将通过管道传送到sed将所有 HTML 标记替换为空字符串的 a。最终输出将保存到新文件stripped_file中。

使用与@Steve 的另一个答案类似的方法,您还可以使用sed'-e选项将表达式链接到单个(非管道命令);通过添加-i,您还可以在不需要cat或新文件的情况下读取并替换原始文件的内容:

sed -i -e 's|</b>|-|g' -e 's|<[^>]*>||g' your_file

这将像上面的链式命令一样进行替换,但是这次它将直接替换输入文件中的内容。要保存到新文件,请删除-i并添加> stripped_file到末尾(或您选择的任何文件名)。

于 2012-10-04T01:24:47.033 回答
0

一种使用方式GNU sed

sed -e 's/<\/b>/-/g' -e 's/<[^>]*>//g' file.txt

例子:

echo "<li><b> Some Text:</b> More Text </li>" | sed -e 's/<\/b>/-/g' -e 's/<[^>]*>//g'

结果:

 Some Text:- More Text
于 2012-10-04T01:25:02.180 回答