全力で怠けたい

怠けるために全力を尽くしたいブログ。

Redash からダウンロードできる CSV ファイルの改行コードが CRLF だった。

Redash からダウンロードできる CSV ファイルの改行コードが CRLF なんだー、と思ったのでメモ。

書いた動機

Redash はクエリーの結果を CSV ファイルでダウンロードすることができるので CSV ファイルをいろいろ加工したりしてとても便利なのだが、Redash からダウンロードした CSV ファイルの改行コードが CRLF であることに気が付かず軽くハマった。

自分は忘れっぽいので時間がたつとまたハマりそうなので忘れないように書いておく。

Redash からダウンロードすることができる CSV の改行コードは CRLF

ダウンロードするものがないと始まらないので、おそらく日本の Redash ユーザーの7割くらいはお世話になっただろう kakakakakku さんの redash-hands-oncity テーブルからデータを引っ張ってみる。

こんな感じの雑な SQL で引っ張ってきたデータの CSV ファイルをダウンロードする。

select * from city limit 3;

で、おもむろに file コマンドで見てみると改行コードが CRLF であることが分かる。

$ file city.csv
city.csv: ASCII text, with CRLF line terminators

$ cat city.csv
ID,Name,CountryCode,District,Population
1,Kabul,AFG,Kabol,1780000
2,Qandahar,AFG,Qandahar,237500
3,Herat,AFG,Herat,186800

一見したところこのファイルは人畜無害なのだが、そのままだと CLI で軽く困ったりする。 たとえば、次のような単純なコマンドもおそらく意図しているとおりには動かない。

$ cat city.csv | xargs -I{} echo "**{}**"
**ID,Name,CountryCode,District,Population
**1,Kabul,AFG,Kabol,1780000
**2,Qandahar,AFG,Qandahar,237500
**3,Herat,AFG,Herat,186800

ではどうすればいいかというと、CR をとってしまうのが一番簡単 (たぶん)

$ cat city.csv | tr -d \\r  | xargs -I{} echo "**{}**"
**ID,Name,CountryCode,District,Population**
**1,Kabul,AFG,Kabol,1780000**
**2,Qandahar,AFG,Qandahar,237500**
**3,Herat,AFG,Herat,186800**

Redash からダウンロードする CSV ファイルの改行コードの設定とか Redash のどこかにありそうなものなんだけど、3分くらい探して見つからなかったので雑に CR を削除することにしたときのメモは以上。