ファイルの最後にテキストをエコー/追加する方法を知っています:
echo "{ "fruit":"apple" , "amount":"10" }" >> file.txt
私の質問は、以下のjsonファイルにオブジェクトを追加する方法です:
ファイル - file.txt (空):
{
"fruit": [
]
}
期待される結果:
{
"fruit": [
{ "fruit":"apple" , "amount":"10" } #object to add
]
}
ed標準のテキストエディタです。
#!/bin/bash
{
ed -s file.json <<EOF
/\"fruit\": \[
a
{ "fruit":"apple" , "amount":"10" } #object to add
.
wq
EOF
} &> /dev/null
そのために bash を使用する理由がわかりませんが、もっと優れたツールがあります。
終わり。
これを試してください:
$ sed -e '/"果物":/a{ "果物":"りんご" , "量":"10" }' file.txt
これにより、「fruit」の後に行が追加されます。ファイルを変更したテキストに置き換える場合:
$ sed -i.bak -e '/"果物":/a{ "果物":"リンゴ" , "量":"10" }' file.txt
行を追加し、ファイルを変更されたコンテンツに置き換えます。古いファイルはバックアップとして保存されますfile.txt.bak。