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
たまに使いそうです