A、B、C、D形式の行を含む大きなファイルがあるとします(各行は4つのコンマ区切りの部分で構成されています)。共通の4番目の部分(この行ではDは同じ)を持つすべての行のリストが必要ですが、残りの部分は異なります(A、B、C)。
たとえば、D部分が同じでも残りの部分は同じであるため、重複した行を出力に表示しないでください。
これを行う方法はありますか?
PSファイルには約8M行があるため、一部の操作はテキストエディタで視覚的に実行できません。
答え1
awk -F, -vD='D' '$4==D && !seen[$0]++' data
-F,
別のフィールド,
-vD='D'
4番目の列を変数に割り当て、4番目の列の値にD
変更します。'D'
$4==D && !seen[$0]++
4番目の列が変数と同じでD
以前に見たことがない場合は、行を印刷します。
後ろにスペースがある場合は、次を,
使用します。
awk -vFS=', *' -vD='D' '$4==D && !seen[$0]++' data