返回正则表达式的每个实例

时间:2011-04-06 18:40:02

标签: regex string sed awk pattern-matching

我已广泛使用Google搜索,每个人都在告诉我如何返回正则表达式匹配的LINE ......

go让我说我在文本文件中有这样的一行:

<a href=http://google.com> Google </a>

我希望能够仅返回&gt;之间发生的事情。和&lt; (“谷歌”)。问题是我可以有一个包含数千行的文件,我只想让sed / awk返回与正则表达式匹配的EXACT字符串。

我认为这将是:

sed 's/>.*</p'

但显然不会工作......

它杀了我,因为我确定它可能非常简单但我无法找到合适的sed线。可以选择不做吗?

所以我只想让它搜索文件,匹配我给它的正则表达式,并返回完全匹配(不是行)

有人有什么想法吗?

2 个答案:

答案 0 :(得分:3)

使用`sed

sed -n 's/^.*>\([^<]*\)<.*$/\1/p'

答案 1 :(得分:2)

如果你有GNU grep,那么-o选项会做你想要的。

echo '<a href=http://google.com> Google </a><span>foo</span>' | 
grep -oP '(?<=>).*?(?=<)'

返回

 Google 
foo

这假设你的html标签及其附带的数据在一行上。这与

不匹配
<a href=...>
blah
</a>