![搜索关键字并获取其出现次数](https://linux22.com/image/142020/%E6%90%9C%E7%B4%A2%E5%85%B3%E9%94%AE%E5%AD%97%E5%B9%B6%E8%8E%B7%E5%8F%96%E5%85%B6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0.png)
我想找出目录中按文件名分组关键字的出现情况。
例子:
关键字 - 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
您可以使用一些文本处理工具进一步对其进行管道传输以修改输出。