LoginSignup
2

More than 5 years have passed since last update.

BSD sedで行挿入

Posted at

BSD sedで行挿入は結構面倒くさい。とくにインタラクティブシェルから操作しようとすると、シェルの様々な機能とバッティングするのか、期待通りに動作させるのは一苦労だ。

今のところ、/usr/bin/printfでコマンド列を用意して、sed -f /dev/stdinで受け取るのが可搬性が高いのかなと思っている。

/usr/bin/printf '/^rpcbind/i\\\nrpcbind : 192.168.0.1/255.255.255.0 : allow\n' | sed -i '' -f /dev/stdin /etc/hosts.allow

bashやzshならプロセス置換を使って、

sed -i '' -f <(/usr/bin/printf '/^rpcbind/i\\\nrpcbind : 192.168.0.1/255.255.255.0 : allow\n') /etc/hosts.allow

と書く方が直感的だろうか。

printf(やecho)もシェルのビルトインとシステムのバイナリとで挙動が違うことが多く悩ましい。

この辺のノウハウがまとまっているページを求めているのだけど、GNU sedの話と切り分けて検索するのが手間で辛い。

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
2