我有几行看起来像这样:
aaaaaaaaxzaaaaaaaaaaaaaa
bbbbbbbbbbbbxzbbbbbbxzbb
ccxzcccccccccccccccccxzc
dddddddxzddddddddddddddd
Run Code Online (Sandbox Code Playgroud)
在其中两行中,有两个xz
字符实例.我希望grep xz
在同一行中查找两次并输出它匹配的行.如果xz
出现一次,我不想知道.
运行以下内容:
cat lines | grep "xz"
Run Code Online (Sandbox Code Playgroud)
用xz告诉我每一行,但我只想看到xz出现两次的行.
如何使模式搜索在同一行中重复?
Wik*_*żew 11
您可以使用
cat lines | grep 'xz.*xz'
Run Code Online (Sandbox Code Playgroud)
要不就
grep 'xz.*xz' lines
Run Code Online (Sandbox Code Playgroud)
在.*
将匹配可选字符2之间(但任何一个新行)xz
.
如果您需要使用环视,则需要-P
切换以启用类似Perl的regexp.
awk是一种解决方法:
awk -F'xz' 'NF==3' file
Run Code Online (Sandbox Code Playgroud)
要么
awk 'gsub(/xz/,"")==2' file
Run Code Online (Sandbox Code Playgroud)
另一个好处AWK带给你的,更容易检查的模式匹配less then n times
,exact n times
或greater than n times
。你只要改变==
成<, <=, >, >=