日々地道に成長

思いついたことを書いていきます。

【awk】awkでcsvファイルの重複行を削除する方法

お疲れ様です。コーヒーです。

 

今回はawkを使用して重複行を削除する方法を紹介します。

 

awkについて

awkは入力として受け取った文字列に対して、フィールド区切り文字やレコード区切り文字を指定して、「列」に対する処理を行うためのコマンドです。

コンパイルがいらないこともあり手軽に使用できます。

しかし、一行ずつ処理をおこなうことなど癖も強いため慣れるまでは使いにくいかなという印象を自分は受けました。

 

awkで重複行を削除

 プログラムとしては以下になります。

awk -F "," -v 'OFS=,' '{if(!a[$1]++){print $1}}'

プログラムのそれぞれの意味を解説は以下のようになります。

 

-F ","

区切り文字の指定ができるオプション。今回はcsvファイルなので「,(カンマ)」を指定しています。

 

'OFS=,' 

出力区切り文字の指定ができるオプション。

今回は出力もcsv形式にしたかったので指定しました。

 

$1, $2, ..., $n, ...

第n列目のデータを表す変数です

 

'{if(!a[$1]++){print $1}}'

if文になります。個々の処理で重複行を削除しています。

 

今回は以上となります!

最後までお読みいただきありがとうございました。