[英]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 1
和rambo
的那些行的計數。
您可以使用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 1
和rambo
都匹配的所有行。 當此評估為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.