jqコマンドでjsonlファイルをtsvファイルに変換してみた
こんにちは!DA(データアナリティクス)事業本部 サービスソリューション部の大高です。
軽量なJSON処理コマンドラインツールであるjqは、CLIでJSON処理をするのに便利なコマンドツールです。
今回、このjqを利用してjsonlファイルをtsvファイルに変換してみたので、忘れないうちに残しておこうと思います。
前提
jqコマンドを事前にインストールしています。 各OSでのインストール方法については、下記ページに記載されています。
今回は「Amazon Linux 2」のコンテナイメージ環境にインストールしたので、下記コマンドでインストールしています。
$ sudo yum install jq -y
変換元のjsonlファイル
今回利用するファイルは以下のようなjsonlファイルです。
{"level":"info","ts":"2023-01-23T10:01:40+09:00","msg":"Start"} {"level":"info","ts":"2023-01-23T10:01:40+09:00","msg":"Loading"} {"level":"info","ts":"2023-01-23T10:01:40+09:00","msg":"Done"}
tsvに変換してみる
まずは、CLI上で確認しつつ処理してみます。
シンプルなjsonlファイルなので、そのままフィールドを指定して変換してみます。
$ cat input.jsonl | jq -r '[.level, .ts, .msg]' [ "info", "2023-01-23T10:01:40+09:00", "Start" ] [ "info", "2023-01-23T10:01:40+09:00", "Loading" ] [ "info", "2023-01-23T10:01:40+09:00", "Done" ]
-r
オプションは--raw-output
オプションと同義です。
これで、各フィールドをパースした配列に変換することができました。
次に、このデータを@tsv
に渡してtsv形式に変換します。
$ cat input.jsonl | jq -r '[.level, .ts, .msg] | @tsv' info 2023-01-23T10:01:40+09:00 Start info 2023-01-23T10:01:40+09:00 Loading info 2023-01-23T10:01:40+09:00 Done
これで想定どおりにtsv形式になりました。
最後に、ファイルに保存します。
$ cat input.jsonl | jq -r '[.level, .ts, .msg] | @tsv' > output.tsv
これでjsonlファイルをtsvファイルに変換することができました。
まとめ
以上、jqコマンドでjsonlファイルをtsvファイルに変換してみました。
jqコマンドはjsonデータを扱うのに便利なので、うまく使いこなせるようになっておきたいです。
どなたかのお役に立てば幸いです。それでは!