统计 grep 搜索的结果?

统计 grep 搜索的结果?

假设我有一个如下列表:

8
382.34.6
sally
sally
8
923
183.3.3
183.3.3
183.3.3
8

我想统计每个唯一值重复的次数并得到如下输出:

8 3
382.34.6 1
sally 2
923 1
183.3.3 3

我需要运行什么命令才能执行此操作?如果有所不同,则列表来自搜索grep

答案1

尝试这个:

sort file | uniq -c | awk '{print $2,$1}'

输出:

183.3.3 3
382.34.6 1
8 3
923 1
莎莉 2

答案2

您可以通过 提供列表| sort | uniq -c | sort -n,如下所示:

echo -e "8\n382.34.6\nsally\nsally\n8\n923\n183.3.3\n183.3.3\n183.3.3\n8" | \
sort | uniq -c | sort -n
      1 382.34.6
      1 923
      2 sally
      3 183.3.3
      3 8

如果你想要值后面的计数,你可以附加| awk '{print $2,$1}'

答案3

一种选择是使用awk如下方法:创建一个关联数组,以要计数的项目为键,并在每次读取相同项目时增加该数组;在输入结束时,遍历数组并打印键和计数:

your grep command | awk '{a[$0]++;next;}; END{for (i in a) print i,a[i];}'

一个可能的优点是,您可能能够直接在中进行模式匹配awk,从而grep完全消除即

awk '/your regex/{a[$0]++;next;}; END{for (i in a) print i,a[i];}'

答案4

尝试这个

stuff=(apple,boat,chicken)
for (i=0; i<${#stuff}; i=i+1); do
echo INPUT | grep ${stuff[i]} | wc
done

输入表示要搜索的文本。同时用您的单词填充数组。

相关内容