我有一个这种类型的文本文件,我将查找包含该字符串的任何行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]++
确保仅在第一次出现时为真