web-dev-qa-db-ja.com

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、パイプ、その他のコマンドを使用してこれを実現できますか?

20
user3065205

タイムスタンプは破棄する必要がありますが、「grep」と「sort --unique」を一緒に使用すると破棄できます。

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

したがって、grep -oは、正規表現に一致する行の部分のみを表示します(そのため、.*を含めてすべてのの後にを含める必要があります(---) "分類の検証」の一致)。次に、エラーのリストのみを取得したら、 sort -u を使用して、エラーの一意のリストのみを取得できます。

38
user4443

このコマンドは、ファイルテストでデータを入力することを想定して使用できます。

uniq -f 2 <test
7
Marko

私はawkで行きます

awk -F: '{ if (!a[$3]++ ) print ;}' file
  • -F: use:セパレータとして
  • $3:の後のパターンです
  • !a[$3]++最初の発生時にのみ真であることを確認する
1
Archemar