我有一个名为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条线中的一条都有,但我只需要 “耙”的线。 我已经尝试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'find所有的3行,把它pipe理成grep
,find这3行中是否包含'Rake'而不是'rake',然后用wc
来计算行数。 我可以使用redirect来创build另一个文件,然后grep -v
这个新文件,但这不是我的目标。 我确定这很简单,但是如何解决我的命令呢?
我已经尝试
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
不要给第二个grep
文件参数,即:
grep Rake a.txt | grep -v rake | wc -l
使用file参数, grep
会再次搜索文件。 没有它,它只会过滤它的输入。