如何在文件中的一行中只有两个单词格式化它们之间存在的特定数量的随机单词

时间:2015-02-02 14:41:13

标签: linux grep

鉴于包含此内容的文件:

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

我只想要包含Feb 1rambo的那些行的计数。

4 个答案:

答案 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 1rambo匹配的所有行。当此计算结果为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

这是我尝试过的,

enter image description here

答案 2 :(得分:0)

2月1日是否总是在兰博之前?如果是的话:

grep -c "Feb 1 .* rambo"

答案 3 :(得分:0)

awk解决方案可能更清晰,但这是一个很好的sed技术:

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