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

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

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

したがって、grep -o正規表現に一致する行の一部のみが表示されます。したがって、.*すべての項目を含めるにはincludeが必要です。後ろに「分類確認」が一致)。その後、エラーリストがあれば使用できます。sort -u一意のエラーリストのみを取得します。

答え2

データがtestファイルにあるとし、このコマンドを使用できます。

uniq -f 2 <test

答え3

私はawkを選ぶ

awk -F: '{ if (!a[$3]++ ) print ;}' file
  • -F:目的:区切り記号で
  • $3モード以降:
  • !a[$3]++最初に発生した場合にのみ真になることを保証します。

関連情報