使用 grep 并寻找唯一的事件

use*_*205 31 command-line 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
Run Code Online (Sandbox Code Playgroud)

输出文件

201600415 10:40 Error Validating Classification: error1
201600415 10:42 Error Validating Classification: error2
201600415 10:43 Error Validating Classification: error3
Run Code Online (Sandbox Code Playgroud)

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

小智 62

您将需要丢弃时间戳,但 'grep' 和 'sort --unique' 可以一起为您完成。

grep --only-matching 'Validating Classification.*' | sort --unique
Run Code Online (Sandbox Code Playgroud)

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


小智 7

您可以使用此命令假设文件测试中的数据

uniq -f 2 <test
Run Code Online (Sandbox Code Playgroud)