搜索关键字并获取其出现次数

搜索关键字并获取其出现次数

我想找出目录中按文件名分组关键字的出现情况。

例子:
关键字 - TEST(意味着 TEST1、TEST2 等可以是有效结果)
文件 - a.txt、b.txt 等(在目录 ../tmp 内)。

输出如下。

a.txt - 4
b.txt - 5
c.txt - 0

我尝试过grep -o "TEST" a.txt,这仅给出了 TEST 及其出现次数;就像如果一个文件出现 3 次(如 TEST1、TEST_XXX、TESTXYES),则输出将为

TEST
TEST
TEST

或者如果无法进行多个文件搜索,则 OUTPUT 应提供所有以 TEST 开头的相似字符串;例如,

TEST
TEST_1
TEST_2
TEST4

我也尝试了以下方法。

grep -c "TEST" a.txt

但这只给出了计数;它没有给出以 TEST 开头的整个文本。

答案1

grep -c匹配的打印数量线-o,因此与选项结合使用不会得到正确的结果。我将通过管道输出grep -oto uniq -c

$ echo 'test1 test2 test3' >/tmp/file1
$ echo 'test1 test2 test3 test4' >/tmp/file2
$ grep -o test /tmp/file* | uniq -c
  3 /tmp/file1:test
  4 /tmp/file2:test

您可以使用一些文本处理工具进一步对其进行管道传输以修改输出。

相关内容