Quantcast
Channel: kariaの日記 @ Alice::Diary
Viewing all articles
Browse latest Browse all 130

sedで「複数行でこのキーワードの並びがあったら削除する」を実現する

$
0
0

以下のような 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コマンドと組み合わせるとさらに使い道があるかもしれない。

参考

sed.open-code.club

www.slideshare.net

Viewing all articles
Browse latest Browse all 130

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>