一意に指定されたフィールドを持つ行の印刷

一意に指定されたフィールドを持つ行の印刷

一意のフィールド合計に基づいて行を印刷する方法は234

フィールド2と3は数字、フィールド3はアルファベットで、ファイルには合計2500行があります。

入力する:

10,11,12,A,3
10,11,12,A,4
10,11,12,B,3

出力:

10,11,12,B,3

答え1

そしてawk

 awk -F, 'NR==FNR{ dup[$2, $3, $4]++; next } (dup[$2, $3, $4]==1)' infile infile

ここでは入力を2回処理します。まず、ファイルを読み取り、infile指定されたフィールドに基づいて繰り返される各行を、その行の発生回数を増やすたびにという連想配列$2に保存します。$3$4dup++

次の手順では、指定されたフィールドが一度だけ表示される場合は、行全体を確認して印刷します。

答え2

たとえば、

egrep '^[^,]*,11,12,B,' input.file

説明する:

^行の先頭から

[^,]「、」以外のすべて

*できるだけ何度も

,11,12,B,それはあなたが探しているものです。

関連情報