我有一长串用换行符分隔的字符串,每个部分都以一个以~
(~
。文件中没有其他字符)开头的字符串分隔。我想扩展grep以找到~
匹配项正下方的文本。
输入:
abc
ads
acb
abc
acsa
acfs
~notthis
abc
ads
acb
xyz <-- pattern
acsa
acfs
~this <-- output
abc
ads
acb
abc
acsa
acfs
~no
搜索时输出xyz
:
~ this
与awk
我会做类似的事情
awk '/xyz/{x=1}x&&/~/{print;exit}' file
但是我想使用grep如果它可以给我带来性能优势
至少在GNU中grep 2.12
:
$ grep -Pzo 'xyz(?:.*\n)*?\K~this' file
~this
如果您的grep
版本不允许-P
使用-z
,则可以改用pcregrep:
$ pcregrep -Mo 'xyz(?:.*\n)*?\K~this' file
~this
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句