このタイプのテキストファイルがあり、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、パイプ、その他のコマンドを使用してこれを実現できますか?
タイムスタンプは破棄する必要がありますが、「grep」と「sort --unique」を一緒に使用すると破棄できます。
grep --only-matching 'Validating Classification.*' | sort --unique
したがって、grep -o
は、正規表現に一致する行の部分のみを表示します(そのため、.*
を含めてすべてのの後にを含める必要があります(---) "分類の検証」の一致)。次に、エラーのリストのみを取得したら、 sort -u
を使用して、エラーの一意のリストのみを取得できます。
このコマンドは、ファイルテストでデータを入力することを想定して使用できます。
uniq -f 2 <test
私はawkで行きます
awk -F: '{ if (!a[$3]++ ) print ;}' file
-F:
use:セパレータとして$3
は:
の後のパターンです!a[$3]++
最初の発生時にのみ真であることを確認する