首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文本文件中删除HTML标记

从文本文件中删除HTML标记
EN

Stack Overflow用户
提问于 2017-04-13 15:12:10
回答 3查看 6.3K关注 0票数 3

我有一些html,如下所示:

代码语言:javascript
复制
`<p>Flannel</p><p>Plaid</p><p>Red</p>`

我想去掉<p></p>标签,用换行符替换,这样我就得到了这样的结果:

代码语言:javascript
复制
Flannel
Plaid
Red

我试图使用以下tr命令:

代码语言:javascript
复制
tr '<[^>]*>' '\n'

但是它只是删除了外部的<>,因此我最终得到了以下结果:

代码语言:javascript
复制
p
Flannel
/p

p
Plaid
/p

p
Red
/p

如何修改它以删除整个标记?

注意:我不在乎我是否在两个实体之间有多条换行符,如果有必要的话,这些行很容易被去掉。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-13 15:25:21

试试这个-

代码语言:javascript
复制
echo "<p>Flannel</p><p>Plaid</p><p>Red</p>"|awk '{gsub(/<[^>]*>/,"\n"); print }'

Flannel

Plaid

Red
票数 2
EN

Stack Overflow用户

发布于 2017-04-13 15:19:01

除非这是一个快速和肮脏的脚本,否则您肯定应该使用HTML解析器来处理HTML语言的所有复杂问题。

一个快速和肮脏的解决方案可以是应用这个sed命令:

代码语言:javascript
复制
sed 's/<[^>]*>/\n/g'

我认为它能满足你需要的具体例子:

代码语言:javascript
复制
$ echo "<p>Flannel</p><p>Plaid</p><p>Red</p>" | sed 's/<[^>]*>/\n/g'

Flannel

Plaid

Red

您的解决方案不起作用,因为tr不工作在字符串上,而是在字符上工作:它只是替换它找到的每个<[^>]*字符,而忽略了您试图编写正则表达式的事实。

票数 3
EN

Stack Overflow用户

发布于 2017-04-13 15:15:11

把它们都放进去

代码语言:javascript
复制
<p>

标签,然后使用

在每个标签之间添加一个换行符。所以,代码应该是这样的:

代码语言:javascript
复制
<p>Flannel<br>Plaid<br>Red</p>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43395942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档