目的
[
{"data": "2016-01-05", "weight": "65.3"}
,{"data": "2016-01-06", "weight": "65.6"}
,{"data": "2016-01-08", "weight": "67.1"}
,{"data": "2016-01-12", "weight": "66.3"}
]
なjsonファイルの末尾に新しくデータを追記したい。
CSVファイル等ならecho hogehoge >> weight.csv
などとやればいいのだが、jsonの場合は単純に末尾に追加するのではなく、]
の前にデータを追加する必要がある。
わざわざjsonをパースして要素を追加し、ファイルに書きだすのは面倒臭い。
解決法
こういう時はsedをつかい
sed -i -e '$i\ ,{"data": "2016-04-13", "weight": "70.0"}' weight.json
としてやれば良い。
[
{"data": "2016-01-05", "weight": "65.3"}
,{"data": "2016-01-06", "weight": "65.6"}
,{"data": "2016-01-08", "weight": "67.1"}
,{"data": "2016-01-12", "weight": "66.3"}
,{"data": "2016-04-13", "weight": "70.0"} <--追加行
]
sedにはいくつか実装があり、sed -i -e '$-1i 追加文字列'
とすべき場合もあるらしい。
環境
gnu-sed 4.2.2