[英]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.