LoginSignup
5
6

More than 5 years have passed since last update.

sedで末尾-1行目に追記する

Last updated at Posted at 2016-04-13

目的

[
  {"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

5
6
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
5
6