一意のフィールド合計に基づいて行を印刷する方法は2
?3
4
フィールド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
$4
dup
++
次の手順では、指定されたフィールドが一度だけ表示される場合は、行全体を確認して印刷します。
答え2
たとえば、
egrep '^[^,]*,11,12,B,' input.file
説明する:
^
行の先頭から
[^,]
「、」以外のすべて
*
できるだけ何度も
,11,12,B,
それはあなたが探しているものです。