sedを使用してテキストファイルの一部と次の行を削除します。

sedを使用してテキストファイルの一部と次の行を削除します。

次のようにファイルを編集する必要があります。

auto wlx00
allow-hotplug wlx00
iface wlx000 inet dhcp
iface wlx000 inet6 auto
  post-up sysctl -w net.ipv6.conf.wlx000.accept_ra=2
auto wlx000

目標は、「iface ... inet6」で始まる行を削除し、スペースで始まる次の数行を削除することです(なし以上の可能性があります)。

iface wlx000 inet6 auto
  post-up sysctl -w net.ipv6.conf.wlx000.accept_ra=2

次の結果を得るには、残りを変更せずに残してください。

auto wlx00
allow-hotplug wlx00
iface wlx000 inet dhcp
auto wlx000

私は次のようにsedを試しました。

sed -i.old -r -e "/iface\s*\w*\s*inet6.*/,\${d;/^\s.*/d;}" /etc/configfile

しかし、正しい位置から始まり、最後まで消去されたすべてを削除します。 ifaceテキストを選択した後、スペースで始まる行だけを削除したいと思います。

ベストアンサー1

モノライナーを次のように調整してみてくださいsed

sed  '/iface\s*\w*\s*inet6.*/,/^[^ ]/ {/^[^ i]/!d}' file

最初のパターンから空白文字で始まらない最初の行までの範囲を一致させ、空白またはiface「i」(先行)で始まる行を削除します.i今後のブロックが必要かどうか再検討が必要です。

次のように動作するようです。

sed -n '/iface\s*\w*\s*inet6.*/ {:L; n; /^[ ]/bL;}; p' file

試してみてもう一度報告してください。

おすすめ記事