当我运行 grep 命令时:
grep -rc 'PATTERN' .
它打印出该模式出现的行数,但它看起来像这样:
./hotel_232424.dat:234
等等...
我如何删除该./hotel_232424.dat:
零件并只打印出数字?
答案1
通过 GNU 实现grep
,您可以使用-h
/--no-filename
选项。
$ grep -rc PATTERN .
./b:1
./a:0
./1/2/c:2
$ grep -rhc PATTERN .
1
0
2
便携式/标准等效项是:
$ find . -type f -exec grep -c PATTERN {} \;
0
2
1
但这意味着grep
每个文件运行一次调用。
相反,如果您想要出现的总数(此处为 1+2 = 3),您可以这样做(可移植):
$ find . -type f -exec cat {} + | grep -c PATTERN
3
(请注意,如果某些文件在最后一行之后有数据(因此,非文本文件),则可能会弄乱结果)
或者,用一个grep
像你这样的支持-r
:
$ grep -r PATTERN . | wc -l
3