行数が数百行あるCSVファイルの行頭に行番号を入れたかった。
何かいい方法はないかと悩んだ、ExcelでCSVファイルを加工すると思わぬことが起こるのでExcelは使いたくない。
shellでも書くか・・・面倒くさい、と思った時に見つけた方法。
- 環境
- Windows10 64bit バージョン1909
- nl (GNU coreutils) 8.31
CSVファイルの行頭に行番号を入れる方法
$ nl -w1 -s, {元のCSV}.csv > {行番号付きCSV}.csv
nl
コマンドは行番号付きでファイルを表示してくれる。
$ nl sample.csv
1 "hoge",2020/05/31,"fuga"
2 "kuma",2020/05/30,"usagi"
3 "tako",2020/05/29,"inu"
4 "ponsuke",2020/05/02,"numa"
-W1
オプションで行番号の表示幅を最小にする。
# 「0」を指定したら怒られた
$ nl -w0 sample.csv
nl: invalid line number field width: ‘0’: Numerical result out of range
$ nl -w1 sample.csv
1 "hoge",2020/05/31,"fuga"
2 "kuma",2020/05/30,"usagi"
3 "tako",2020/05/29,"inu"
4 "ponsuke",2020/05/02,"numa"
-s,
オプションで行番号の後に「,」を表示してくれる。
$ nl -w1 -s, sample.csv
1,"hoge",2020/05/31,"fuga"
2,"kuma",2020/05/30,"usagi"
3,"tako",2020/05/29,"inu"
4,"ponsuke",2020/05/02,"numa"