ablog

不器用で落着きのない技術者のメモ

sed でマッチした次の行だけ置換する方法

以下のような yaml で syslog_output: の次の行の enabled を false にしたい場合、

$ cat test.yaml
syslog_output:
  enabled: true
stdout_output:
  enabled: true

sed の N コマンドを使って次の行を置換できる。 -i.org で元のファイルは test.yaml.org にリネームされて残っている。

$ sed -i.org -e '/syslog_output/ { N; s/enabled: true/enabled: false/ }' test.yaml
$ cat test.yaml
syslog_output:
  enabled: false
stdout_output:
  enabled: true

Yuki Fujimura(c)