0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CSVの特定のフィールドの組み合わせが重複していないか確認する

Last updated at Posted at 2025-06-29

背景・目的

  • CSVファイルの特定のフィールドの組み合わせが重複していないか確認する必要があった
  • 先頭フィールドに行番号が振られていたので単純なsort | uniqができなかった
  • 確認用にわざわざファイルを作成したりしたくなかった
  • ワンライナーでパッと確認したかった

コマンド

# 特定フィールドの組み合わせが重複している行を出力
$ awk -F',' 'a[$2","$4]++ { print }' example.csv

ミニ解説

  • -F','で区切り文字をカンマに指定
  • a[$2","$4]++で特定のフィールドをキーに、出現回数を値にした配列を作成している
  • 上記の配列を判定して2回以降出現した組み合わせは後続の処理を実行する
  • awkの判定は0:偽0以外:偽となる
  • ここではインクリメント前の値が判定されてからインクリメントされるので、初めて出現した組み合わせの数は0なので後続のprintが実行されず、インクリメントされる
  • 2回以降出現した組み合わせは最初から1以上、つまり真になるので後続のprintが実行される

補足

  • awkの判定では数値として認識できない場合(空文字など)も偽となるので注意
  • CSVだけでなくTSVやその他にも特定の区切り文字でフィールドの順序が合わせられるファイルであれば同じように対応可能だと思われる
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?