csvファイルの値の重複をチェックします。
前提
test.csv
1,Hosoda,Tokyo
2,Matsuoka,Tokyo
3,Oda,Shiga
4,Takano,Osaka
4,Nagata,Kochi
5,Ito,Saitama
6,Sone,Tokyo
5,Nakku,AAne
4,Shiroichi,Hokkaido
上記csvファイルの一番目の列の値を重複チェックします。
実行
$ cat test.csv | awk -F',' '{print$1}' | sort -n | uniq -c | awk '{ if ($1>1){ print $2}}'
4
5
実行結果から4と5が重複していることがわかります。
cat test.csv | awk -F',' '{print$1}' | sort -n
test.csvファイルの値をカンマで区切った上で一番目の列の値を取得し、数字として昇順に並び替えます。
uniq -c
一番目の値が出てきた回数を、一番目の値の左隣りに出力します(※で詳細を説明します)。
awk '{ if ($1>1){ print $2}}'
重複した回数が1回より多いとき、csvファイルの1番目の値を出力します。
※
$ cat test.csv | awk -F',' '{print$1}' | sort -n | uniq -c
1 1
1 2
1 3
3 4
2 5
1 6
先頭列に重複回数が挿入されます。
注意
$ cat test.csv | awk -F',' '{print$1}' | uniq -c | awk '{ if ($1>1){ print $2}}'
4
uniq -c
このコマンドは、重複した値の数を数えますが、連続した値でないと数えてくれないので、
直前で sortコマンドを入れる必要があります。