私のファイルを美しくするためにjqを使用できますか?

私のファイルを美しくするためにjqを使用できますか?

私はjqを使ってjsonファイルを読み込み、ファイルのきれいなバージョンを書くシェルスクリプトを書いています。

cat input.json | jq . > pretty.json
cp pretty.json ./input.json
rm pretty.json

2行と3行が必要な理由は次のとおりです。

cat input.json | jq . > input.json

ファイルを空白のままにすると、一時ファイルを使用せずにshell / jqを使用してファイルを美しくする方法はありますか?

ベストアンサー1

jqいいえ、ファイルを処理して結果を生ファイルに出力することはできません。

次のように一時ファイルを使用できます。

cp   file.json      file.json.tmp &&
jq . file.json.tmp >file.json     &&
rm   file.json.tmp

この一連の操作は、元のファイルのメタデータも保存します。各ステップは、前のステップが正常に完了したかどうかに依存するため、たとえば、&&実行が失敗しても文書は失われません。jq

spongeGNU(ソフトウェアパッケージの一部)などのツールを使用して、moreutils一時ファイルを処理する手作業を非表示にできます。

jq . file.json | sponge file.json

これはまだ背後に一時ファイルを使用していることに注意してください。

2つのバリエーションのうち、jqパーティションが突然いっぱいになったり、正しく実行されなかった場合(入力文書の可用性またはエラーのため)、3つのコマンドの最初のセットだけがデータの損失を防ぐことができます。

おすすめ記事