以下のような input.txt
というテキストファイルがあったとして、「hogeを含む行」→「fugaを含む行」の2行 だけ を取り除きたい、みたいなケースをsedで対応する。
aaa hoge: xxxx fuga: xxxx bbb hoge: xxxx ccc
以下の様な remover.sed
を用意する
/hoge/ { N /fuga/ d }
hogeを含む行の次の行にfugaが含まれていたら、dコマンドを使って2行とも削除する。該当しなかったら何もしない。
実行
$ sed -f remover.sed input.txt > output.txt
出力された output.txt
を開くと、以下の様に「hogeを含む行」→「fugaを含む行」の連続が消えているはず。
aaa bbb hoge: xxxx ccc
理論上は何行でもいけると思うしワンライナーにも出来ると思う(sedへの理解を深めるべく見やすさ重視でファイルにした)。PコマンドやDコマンドと組み合わせるとさらに使い道があるかもしれない。
参考
www.slideshare.net