簡體   English   中英

Bash:我如何為同一個字符串的多個實例grep一行?

[英]Bash: How can I grep a line for multiple instances of the same string?

我有幾行看起來像這樣:

aaaaaaaaxzaaaaaaaaaaaaaa
bbbbbbbbbbbbxzbbbbbbxzbb
ccxzcccccccccccccccccxzc
dddddddxzddddddddddddddd

在其中兩行中,有兩個 xz字符實例。 我希望grep在同一行中查找xz兩次並輸出它匹配的行。 如果xz出現一次,我不想知道。

運行以下內容:

cat lines | grep "xz"

用xz告訴我每一行,但我只想看到xz出現兩次的行。

如何使模式搜索在同一行中重復?

您可以使用

cat lines | grep 'xz.*xz'

要不就

grep 'xz.*xz' lines

.*將匹配2 xz之間的可選字符(除了換行符之外的任何字符)。

如果你需要使用環視,你需要-P開關來啟用類似Perl的regexp。

awk是一種方法:

awk -F'xz' 'NF==3' file

要么

awk 'gsub(/xz/,"")==2' file

awk帶給你的另一個好處是,更容易檢查匹配less then n timesexact n timesgreater than n times 你只需將==改為<, <=, >, >=

如果要完整輸出匹配的行,則不需要選項

grep 'xz.*xz' filename

會做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM