BSD sedで行挿入
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の話と切り分けて検索するのが手間で辛い。
Author And Source
この問題について(BSD sedで行挿入), 我々は、より多くの情報をここで見つけました https://qiita.com/mzaki/items/97390a9751c89064565a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .