簡體   English   中英

如何在文件中的一行中僅對兩個單詞進行grep特定數量的隨機單詞

[英]How to grep only two words in a line in file between them specific number of random words present

給定一個具有以下內容的文件:

Feb 1 ohio a1 rambo
Feb 1 ny   a1 sandy
Feb 1 dc   a2 rambo
Feb 2 alpht a1 jazzy

我只想要包含Feb 1rambo的那些行的計數。

您可以使用awk來更有效地執行此操作:

$ awk '/Feb 1/ && /rambo/' file
Feb 1 ohio a1 rambo
Feb 1 dc   a2 rambo

要計算匹配數:

$ awk '/Feb 1/ && /rambo/ {sum++} END{print sum}' file
2

說明

  • awk '/Feb 1/ && /rambo/'表示:匹配Feb 1rambo都匹配的所有行。 當此評估為True時,awk將執行其默認行為:打印行。

  • awk '/Feb 1/ && /rambo/ {sum++} END{print sum}'作用相同,僅是代替打印行,而是增加var sum 完全掃描文件后,它將進入END塊,在該塊中打印var sum的值。

按照@Marc的建議嘗試一下,

grep 'Feb 1.*rambo' file |wc -l

如果不確定兩個字符串的位置是否如問題中所述,以下命令將很有用,

grep 'rambo' file|grep 'Feb 1'|wc -l

輸出將是

2

這是我嘗試過的

在此處輸入圖片說明

2月1日是否總是在蘭博之前? 如是:

grep -c "Feb 1 .* rambo"

awk解決方案可能更清晰,但這是一種不錯的sed技術:

 sed -n '/Feb 1/{/rambo/p; }' | wc -l

暫無
暫無

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

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