Linux 命令用于在许多文本文件中查找唯一的文件内容

Linux 命令用于在许多文本文件中查找唯一的文件内容

我有一堆显示错误消息的文件,每个文件都有一个回溯。其中许多文件有相同的错误消息,我想列出每个文件中所有唯一的错误消息。如何找到唯一文件内容集?

编辑:澄清一下,每个文件都包含来自 Python 的回溯,所以这些是多行文件,我想要找到唯一的一组。

答案1

如果您有“一堆”文件,find并且xargs是要使用的工具。您的问题也需要grepsortuniq

如果所有错误消息Error: blah blah在行首都看起来像“ ”(您应该这么说),那么这样做就可以了:

find . -type f -print0 |\
  xargs -0 --no-run-if-empty grep --no-filename "^Error:" |\
    sort | uniq -c | sort -rn

最后一行是用于计数唯一出现的次数的著名表达式。第一sort行将所有相同的消息组合在一起,uniq -c仅输出唯一行,前面带有计数 ( -c),最后一行sort -rn按数字反向排序。

for readthis in find xargs grep sort uniq ; do
    man $readthis
done

相关内容