![Linux 命令用于在许多文本文件中查找唯一的文件内容](https://linux22.com/image/918915/Linux%20%E5%91%BD%E4%BB%A4%E7%94%A8%E4%BA%8E%E5%9C%A8%E8%AE%B8%E5%A4%9A%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%94%AF%E4%B8%80%E7%9A%84%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9.png)
我有一堆显示错误消息的文件,每个文件都有一个回溯。其中许多文件有相同的错误消息,我想列出每个文件中所有唯一的错误消息。如何找到唯一文件内容集?
编辑:澄清一下,每个文件都包含来自 Python 的回溯,所以这些是多行文件,我想要找到唯一的一组。
答案1
如果您有“一堆”文件,find
并且xargs
是要使用的工具。您的问题也需要grep
、sort
和uniq
如果所有错误消息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