我有一个包含以下行的文件:
<li><b> Some Text:</b> More Text </li>
我想删除 html 标签并用</b>
破折号替换标签,所以它变成这样:
Some Text:- More Text
我正在尝试使用 sed 但是我找不到正确的正则表达式组合。
如果您严格想要去除所有 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
到末尾(或您选择的任何文件名)。
一种使用方式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