繁体   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