使用 grep 并寻找唯一的出现次数

使用 grep 并寻找唯一的出现次数

我有一个这种类型的文本文件,我将查找包含该字符串的任何行Validating Classification,然后获取唯一报告的错误。我不知道可能的错误类型。

输入文件:

201600415 10:40 Error Validating Classification: error1
201600415 10:41 Error Validating Classification: error1
201600415 10:42 Error Validating Classification: error2
201600415 10:43 Error Validating Classification: error3
201600415 10:44 Error Validating Classification: error3

输出文件

201600415 10:40 Error Validating Classification: error1
201600415 10:42 Error Validating Classification: error2
201600415 10:43 Error Validating Classification: error3

我可以使用 grep、管道和其他命令来实现这一点吗?

答案1

您将需要丢弃时间戳,但“grep”和“sort --unique”一起可以为您做到这一点。

grep --only-matching 'Validating Classification.*' | sort --unique

因此grep -o只会显示与您的正则表达式匹配的行的部分(这就是为什么您需要包含 来.*包含所有内容“验证分类”匹配)。然后一旦你有了错误列表,你就可以使用sort -u只获取唯一的错误列表。

答案2

您可以使用此命令,假设您的数据位于文件 test 中

uniq -f 2 <test

答案3

我会选择 awk

awk -F: '{ if (!a[$3]++ ) print ;}' file
  • -F:用途:作为分隔符
  • $3是模式之后:
  • !a[$3]++确保仅在第一次出现时为真

相关内容