在有人将此标记为重复之前,我想说的是我看过这样的帖子: HTML Tags
可悲的是,那里的解决方案并不适合我。
在一个非常有用的评论之后,我现在意识到我最初的问题不是在HTML标签之间获取文本,而是使用非ASCII字符的greps。因此,这个问题似乎与this one重复。感谢所有有用的评论,抱歉复制,我老实说用了一个小时才发布这里!
我认为角色" '"是问题,因为grep -E -o'()。*'只匹配此角色。我不确定为什么会这样,并且会对此有任何帮助或暗示。
问题如下:我有一个文件,例如看起来像这样,我想在强标签之间提取文本:
> <p>Here is something</p> <ul> <li>
> <p><strong>Here is something else</strong> And I keep typing here
强者总是在同一条线上,这应该让它更容易,至少我是这么认为的。
我自己的想法导致我
grep -E -o '\<strong\>.*\<\/strong\>' test.txt
直到我意识到\&lt;只查找一个单词的开头(我不确定&lt;有特殊含义所以我想逃避它)。
然后我继续尝试grep -E -o '(<strong>).*(<\/strong>)
,令人惊讶的是,它适用于我上面给你的测试文件。
现在,事实是,原始文件在强标签之间有书名,书名往往包含撇号,我认为它们搞砸了。 让我们看看另一个示例文件:
> <p>Here is something</p> <ul> <li>
> <p><strong>That`s a stupid</strong> And I keep typing here <p>>
> <strong>Complications: A Surgeon’s Notes on an Imperfect Science</strong> ?
> blablabla <p><strong>Another test, with this kind of ' apostrophe</strong> bla bla
现在使用grep -E -o '(<strong>).*(<\/strong>)'
之前的grep只返回第一个和第三个匹配:
> <strong>That`s a stupid</strong>
> <strong>Another test, with this kind of ' apostroph</strong>
我不明白为什么
"<strong>Complications: A Surgeon’s Notes on an Imperfect Science</strong>"
没有匹配。
我很清楚这个角色&#34; '&#34;是问题,因为grep -E -o '(<strong>).*'
只匹配&#34;并发症:外科医生&#34;。
任何关于为什么角色的想法&#34; '&#34;会有什么问题吗?我注意到当打印文件cat file.txt时,该字符也显示不正确。
另外,在类似的说明中:现在grep仍在返回标签。如何禁用此功能?我认为我只能在那里使用一个论点(这就是我在代码中包含括号的原因),但我似乎无法找到它。
谢谢大家,感谢任何帮助! 我也很抱歉格式错误,我认为示例文件中的HTML标签溢出了问题......