我广泛地搜索了一下,每个人都在告诉我如何返回regex匹配的行……
假设我在一个文本文件中有这样一行:
<a href=http://google.com> Google </a>
我希望能够只返回>和< ("Google")之间发生的内容。问题是,我可能有一个包含数千行这样的文件,而我只想让sed/awk返回与正则表达式完全匹配的字符串。
我认为它应该是这样的:
sed 's/>.*</p'
但很明显那是行不通的。
这简直要了我的命,因为我确信这可能很简单,但我就是找不到合适的sed行。sed就不能这样做吗?
所以我只想让它搜索一个文件,匹配我给它的正则表达式,然后返回完全匹配的内容(不是这一行)
有谁有什么想法吗?
发布于 2011-04-07 02:42:13
使用` `sed
sed -n 's/^.*>\([^<]*\)<.*$/\1/p'
发布于 2011-04-07 03:34:23
如果您有GNU grep,那么-o
选项将执行您想要的操作。
echo '<a href=http://google.com> Google </a><span>foo</span>' |
grep -oP '(?<=>).*?(?=<)'
返回
Google
foo
这假设您的html标记及其包含的数据在一行中。这不匹配
<a href=...>
blah
</a>
https://stackoverflow.com/questions/5571341
复制相似问题