鉴于包含此内容的文件:
Feb 1 ohio a1 rambo
Feb 1 ny a1 sandy
Feb 1 dc a2 rambo
Feb 2 alpht a1 jazzy
我只想要包含Feb 1
和rambo
的那些行的计数。
答案 0 :(得分:1)
您可以使用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
的值。
答案 1 :(得分:0)
根据@ Marc的建议尝试这个,
grep 'Feb 1.*rambo' file |wc -l
如果两个字符串的位置不确定如下所述,下面的命令将很有用,
grep 'rambo' file|grep 'Feb 1'|wc -l
输出将是,
2
这是我尝试过的,
答案 2 :(得分:0)
2月1日是否总是在兰博之前?如果是的话:
grep -c "Feb 1 .* rambo"
答案 3 :(得分:0)
awk解决方案可能更清晰,但这是一个很好的sed技术:
sed -n '/Feb 1/{/rambo/p; }' | wc -l