我有一些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如何修改它以删除整个标记?
注意:我不在乎我是否在两个实体之间有多条换行符,如果有必要的话,这些行很容易被去掉。
发布于 2017-04-13 15:25:21
试试这个-
echo "<p>Flannel</p><p>Plaid</p><p>Red</p>"|awk '{gsub(/<[^>]*>/,"\n"); print }'
Flannel
Plaid
Red发布于 2017-04-13 15:19:01
除非这是一个快速和肮脏的脚本,否则您肯定应该使用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不工作在字符串上,而是在字符上工作:它只是替换它找到的每个<[^>]*字符,而忽略了您试图编写正则表达式的事实。
发布于 2017-04-13 15:15:11
把它们都放进去
<p>标签,然后使用
在每个标签之间添加一个换行符。所以,代码应该是这样的:
<p>Flannel<br>Plaid<br>Red</p>
https://stackoverflow.com/questions/43395942
复制相似问题