我已广泛使用Google搜索,每个人都在告诉我如何返回正则表达式匹配的LINE ......
go让我说我在文本文件中有这样的一行:
<a href=http://google.com> Google </a>
我希望能够仅返回&gt;之间发生的事情。和&lt; (“谷歌”)。问题是我可以有一个包含数千行的文件,我只想让sed / awk返回与正则表达式匹配的EXACT字符串。
我认为这将是:
sed 's/>.*</p'
但显然不会工作......
它杀了我,因为我确定它可能非常简单但我无法找到合适的sed线。可以选择不做吗?
所以我只想让它搜索文件,匹配我给它的正则表达式,并返回完全匹配(不是行)
有人有什么想法吗?
答案 0 :(得分:3)
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>