Bash 我可以为grep结果中相同结果的数量进行grep吗?

Bash 我可以为grep结果中相同结果的数量进行grep吗?,bash,unix,grep,Bash,Unix,Grep,这是我的grep命令: grep 'Query failed' file.txt | grep -o '\bT\w*' 搜索字符串“Query failed”,然后它会给我以T开头的单词 结果是,例如: Test1 Test1 Test2 Test2 Test2 Test3 Test4 Test4 是否可能得到如下结果: Test1 = 2 Test2 = 3 Test3 = 1 Test4 = 2 提前感谢大家扩展当前管道的一个选项是使用uniq计算发生次数,并使用awk重新格式化行:

这是我的grep命令:

grep 'Query failed' file.txt | grep -o '\bT\w*'
搜索字符串“Query failed”,然后它会给我以T开头的单词

结果是,例如:

Test1
Test1
Test2
Test2
Test2
Test3
Test4
Test4
是否可能得到如下结果:

Test1 = 2
Test2 = 3
Test3 = 1
Test4 = 2

提前感谢大家

扩展当前管道的一个选项是使用
uniq
计算发生次数,并使用
awk
重新格式化行:

your_commands | uniq -c | awk '{ print $2 " = " $1 }'
请注意,
uniq
希望接收排序后的输入,因此您可能需要事先通过管道进行
sort

或者,您可以在awk中完成整个过程:

awk '/Query failed/ { for (i = 1; i <= NF; ++i) if ($i ~ /^T/) ++seen[$i] } 
    END { for (i in seen) print i " = " seen[i] }' file

awk'/Query失败/{for(i=1;i将其导入
sort
uniq-c
以计算所有重复

grep 'Query failed' file.txt | grep -o '\bT\w*' | sort | uniq -c
输出将是:

   2 Test1
   3 Test2
   1 Test3
   2 Test4

从您的示例来看,原始文件似乎已经排序。如果是这样,您可以省略
排序
步骤。

谢谢!我也可以在数字之后而不是在测试之后排序吗?
uniq
要求对其输入进行排序,因此您必须在
uniq
之前进行排序。