Linuxコマンド:CSVファイルの行頭(1列目)に行番号を挿入

仕事で、データ処理に関わることがあり、

大量レコードを扱う際に、CSVファイルの行頭(1列目)に行番号を挿入したい場面があったので備忘録になります。

ファイルはこんな感じのデータ

$ cat test.csv
FirstName,Gender,Age,PhoneNumber,CustomerID,City
A,男,10,111111111,111222,東京
B,男,15,222222222,222333,札幌
C,男,20,333333333,333444,名古屋
D,男,25,444444444,444555,福岡
E,男,30,555555555,555666,大阪

これで、CSVの行頭に数字( 1 ~ )が割り振られた状態で出力

$ nl test.csv
     1  FirstName,Gender,Age,PhoneNumber,CustomerID,City
     2  A,男,10,111111111,111222,東京
     3  B,男,15,222222222,222333,札幌
     4  C,男,20,333333333,333444,名古屋
     5  D,男,25,444444444,444555,福岡
     6  E,男,30,555555555,555666,大阪

以下で、行頭に数字が割り振られ、[ , ] で区切られたCSV形式の状態で出力

$ nl -w1 -s, test.csv  
1,FirstName,Gender,Age,PhoneNumber,CustomerID,City
2,A,男,10,111111111,111222,東京
3,B,男,15,222222222,222333,札幌
4,C,男,20,333333333,333444,名古屋
5,D,男,25,444444444,444555,福岡
6,E,男,30,555555555,555666,大阪

新しいファイルに吐き出したい場合は

$ nl -w1 -s, [ 元のCSV ] > [ 出力先ファイル名 ].csv 

たまに使いそうです