我想找出目录中按文件名分组关键字的出现情况。
例子:
关键字 - 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 -o
to 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
您可以使用一些文本处理工具进一步对其进行管道传输以修改输出。