特定の列に重複した値を持つファイルのすべての行を印刷する方法

特定の列に重複した値を持つファイルのすべての行を印刷する方法

次のファイルが与えられた場合:

1,768,12,46576457,7898
1,123,435,134,146
2,345,6756856,12312,1311
5,234,567465,12341,1341
1,3245,4356345,2442,13
9,423,2342,121,463
9,989,342,121,1212

列1の値が少なくとも2回(列1で)表示されるように、すべての行を(bash端末で)リストしたいと思います。結果は

1,768,12,46576457,7898
1,123,435,134,146
1,3245,4356345,2442,13
9,423,2342,121,463
9,989,342,121,1212

ベストアンサー1

ファイル全体をメモリーに保存したくない場合は、次のようにします。

awk -F , '
  !count[$1]++ {save[$1] = $0; next}
  count[$1] == 2 {
    print save[$1]
    delete save[$1]
  }
  {print}'

おすすめ記事