是否有一种方法可以指定我想要追加到我的文件中的regexp组?在下面的示例中,我只想在我的文件中存储(\d{8}):
grep -P1 -o kamilla(\d{8}) >> whatever.txt发布于 2014-08-30 20:37:42
您将需要使用肯定的Lookbehind断言或替代方法,以使其不包含在匹配中。
正向后看
grep -Poi '(?<=kamilla)\d{8}'回顾性断言,在字符串中的当前位置,前面的是"kamilla“。如果断言成功,正则表达式引擎将匹配八位数。
\K 转义序列:
grep -Poi 'kamilla\K\d{8}'\K转义序列重置报告的匹配的起点。任何以前匹配的字符都不包含在最终匹配序列中。
-o选项只显示匹配模式的部分。发布于 2014-08-30 20:37:34
您可以使用-o开关和\K,它移除匹配的前一部分:
$ grep -Poi 'kamilla\K\d{8}' <<<"kamilla83222237"
83222237当您使用Perl风格的正则表达式时,您也可以只使用Perl:
$ perl -nE 'say $1 if /kamilla(\d{8})/' <<<"kamilla83222237"
83222237发布于 2014-08-30 20:40:32
另一种方式是:
$ grep -P -o '(?<=kamilla)\d{8}' <<< kamilla12345678
12345678https://stackoverflow.com/questions/25586484
复制相似问题