sedで一致する行の前後のn行範囲を削除しますか?

sedで一致する行の前後のn行範囲を削除しますか?

vimでは利用可能です...

:g/match/-1d

...一致する前に複数行を複数回削除します...

...そしてそれをいくつかの呼び出しと組み合わせます...

:g/match/+1d

...試合終了後に複数行を削除します...

:g/match/-1d,+1d

...前、後、および現在の行を削除...

sedも同じことができますか?

ベストアンサー1

sedをリクエストしましたが、ed次のようにすることもできます。

$ seq 10 > input
$ ed -s input <<< '/5/ -2, /5/ +2 d'$'\n'w
$ cat input
1
2
8
9
10

これは、edにs2つのコマンドを使用してファイルを自動的に編集するように指示します。input

  1. regexに一致する行から始めて52行を減算し、regexに一致する行で終わり、52行を追加してd範囲を削除します。

(ANSIエスケープされた改行文字で区切られています$'\n'

  1. wファイルをディスクに書き換える

おすすめ記事