xxx<1+ whitespaces>"
我试图匹配和之间的任何字符(换行符除外)whitespace
。
输入字符串的格式如下:
xxx<1+ whitespaces>"yyy<1+ whitespaces>zzz"
我尝试使用以下 PCRE:
$ echo 'xxx "yyy zzz"' | grep -Po '(?<=\xxx\s+").*?(?=\s)'
grep: lookbehind assertion is not fixed length
然而,正如我们所看到的,PCRE 不支持浮动lookbehind,因为它可能会导致重大的性能问题。
这是解决方法:
$ echo 'xxx "yyy zzz"' | grep xxx | grep -Po '(?<=").*?(?=\s)'
yyy
在这里我们看到它可以工作,但是grep
被调用了两次,这可能被认为是次优的。
是否有可能仅通过一次调用就获得相同的结果grep
?
如果不是,那么是否可以实现相同的结果,但只需一次<toolname>
(也许awk
)调用?
使用重置运算符:
\K