LoginSignup
0
1

More than 5 years have passed since last update.

tsvから対象のidの行を抜き出しcsvで出力するワンライナー

Posted at

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を空文字に変換。もっと賢いやり方があると思うが手抜き。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1