sed/awkで指定された範囲の行を削除(除外)して出力する
Pocket

sedやawkで、指定された範囲の行を除外(というか、削除)したいということがあったので、その備忘。
以下のように記述して実行してやることで、対象となる範囲の行を除外して出力できる。

sed '/start/,/end/d' PATH
awk '/start/,/end/{next}{print}' PATH
Sponsored Links

[root@BS-PUB-CENT7-01 ~]# cat test.txt
111
222
333
444
start
eee
ddd
sss
end
555
666
777
888
999
[root@BS-PUB-CENT7-01 ~]# cat test.txt | sed '/start/,/end/d'
111
222
333
444
555
666
777
888
999
[root@BS-PUB-CENT7-01 ~]# cat test.txt | awk '/start/,/end/{next}{print}'
111
222
333
444
555
666
777
888
999

 

なお、開始と終了の語句が同じ場合、awkだと語句のある行のみが削除されてしまい、うまく範囲指定できないので注意。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*