tsvをcsvに変換
コマンド
tsvから対象のidの行を抜き出しcsvで出力
cat ${source}.tsv | awk -F'\t' "\$1~/${id}/" | sed -e 's/\t/","/g' | sed -e 's/^/"/g' | awk -F\n -v ORS='"\n' '{print}'| sed -e 's/"NULL"/""/g' > ${store}.csv
解説
- cat ${source}.tsv
- わざわざcatしなくてよくね?と思うが、実際はここでzcatをしてたりする。大抵こういうワンライナーでは最初はcatにしといた方が手直しが少ないという主観的なアレ。
- awk -F'\t' "\$1~/${id}/"
- idを抜き出し。egrepとかでやろうとすると正規表現が長くなって管理しづらかった
- sed -e 's/\t/","/g' | sed -e 's/^/"/g' | awk -F\n -v ORS='"\n' '{print}'
- 区切り文字を変換している。単純に
s/\t/,/
でやると文字列がカンマを含むパターンでデータが壊れる(ex. "1,000円")ので、要素を""で囲っている
- 区切り文字を変換している。単純に
- sed -e 's/"NULL"/""/g'
- NULLを空文字に変換。もっと賢いやり方があると思うが手抜き。