Quantcast
Channel: Linux –俺的備忘録 〜なんかいろいろ〜
Viewing all articles
Browse latest Browse all 743

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

$
0
0

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

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

[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だと語句のある行のみが削除されてしまい、うまく範囲指定できないので注意。

 

「シェル芸」に効く!AWK処方箋 「シェル芸」に効く!AWK処方箋

Viewing all articles
Browse latest Browse all 743

Trending Articles