我有一些看起来像这样的HTML:
`<p>Flannel</p><p>Plaid</p><p>Red</p>`
我想删除<p>
和</p>
标记并替换为换行符,因此我最终得到类似的内容:
Flannel
Plaid
Red
我正在尝试使用此tr
命令:
tr '<[^>]*>' '\n'
但它只删除了外部的<
和>
,所以我最终会改为:
p
Flannel
/p
p
Plaid
/p
p
Red
/p
如何修改它以删除整个标记?
注意:我不介意我是否最终在entires之间有多个新行,如果有必要,以后很容易删除。
答案 0 :(得分:2)
试试这个 -
echo "<p>Flannel</p><p>Plaid</p><p>Red</p>"|awk '{gsub(/<[^>]*>/,"\n"); print }'
Flannel
Plaid
Red
答案 1 :(得分:1)
除非这是一个快速而又脏的脚本,否则你绝对应该使用HTML解析器来处理HTML语言的所有复杂性。
快速而肮脏的解决方案可能是应用此sed
命令:
sed 's/<[^>]*>/\n/g'
我认为通过您的具体示例可以满足您的需求:
$ echo "<p>Flannel</p><p>Plaid</p><p>Red</p>" | sed 's/<[^>]*>/\n/g'
Flannel
Plaid
Red
您的解决方案不起作用,因为tr
不会处理字符串,而是处理字符:它只是替换它找到的每个<[^>]*
个字符,无视您的事实试图写一个正则表达式。
答案 2 :(得分:0)
将它们全部放在同一个
中<p>
标签,然后在每个标签之间使用
标签添加换行符。
所以,代码应该是这样的:
<p>Flannel<br>Plaid<br>Red</p>