2 番目の部分では同じですが、1 番目の部分では別の行をリストします。

2 番目の部分では同じですが、1 番目の部分では別の行をリストします。

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

関連情報