繁体   English   中英

将2个grep命令插入wc

[英]Piping 2 grep commands into wc

我有一个名为a.txt的文件,该文件长100行。

grep    rake a.txt | wc    #returns 10 lines

grep -v rake a.txt | wc    #returns 90 lines

grep    Rake a.txt | wc    #returns  3 lines

这100条线中的一条具有两者,但我希望只有 'Rake'的线。 我已经尝试过grep Rake a.txt | grep -v rake a.txt | wc grep Rake a.txt | grep -v rake a.txt | wc grep Rake a.txt | grep -v rake a.txt | wc返回90行?

我想找到所有带有'Rake'的3行,将其传送到grep ,查找这3行中是否包含'Rake'而不是'rake',然后使用wc来计算行数。 我可以使用redirect来创建另一个文件,然后使用grep -v这个新文件,但这并不是我真正的目标。 我敢肯定这很简单,但是如何解决我的命令呢?

不要给第二个grep提供文件参数,即:

grep Rake a.txt | grep -v rake | wc -l

使用file参数, grep将再次搜索文件。 没有它,它将仅过滤其输入。

我已经尝试过grep Rake a.txt | grep -v rake a.txt | wc grep Rake a.txt | grep -v rake a.txt | wc grep Rake a.txt | grep -v rake a.txt | wc返回90行?

管道的关键是命令的输出将馈送给下一个命令。 相反,您正在管道处理,然后说grep -v rake a.txt ,这使先前的命令多余。

因此,您只需要正常进行管道传输:

grep Rake a.txt | grep -v rake   | wc
#                              ^
#                             removed a.txt

您还可以使用awk并告诉它对包含Rake而不是rake的行进行计数。 最后,打印计数器:

awk '/Rake/ && !/rake/ {count++} END {print count+0}' a.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM