sedで範囲(n~m行)とパターンを同時に満たした行に対してのみ処理を行う

忘れやすいので、備忘として残しておく。
sedで行範囲(n~m行)とパターン(指定した文字列を含むか否か)を同時に満たしている行に対してのみ処理を行いたい場合、以下の様にする。

sed 'n,m{/pattern/s/Before/After/g}'
Sponsored Links

[root@BS-PUB-CENT7-01 ~]# echo {a..e}{01..10} | xargs -n5 | cat -n
1  a01 a02 a03 a04 a05
2  a06 a07 a08 a09 a10
3  b01 b02 b03 b04 b05
4  b06 b07 b08 b09 b10
5  c01 c02 c03 c04 c05
6  c06 c07 c08 c09 c10
7  d01 d02 d03 d04 d05
8  d06 d07 d08 d09 d10
9  e01 e02 e03 e04 e05
10  e06 e07 e08 e09 e10
[root@BS-PUB-CENT7-01 ~]# echo {a..e}{01..10} | xargs -n5 | cat -n | sed '3,8{/01/s/0/X/g}'
1  a01 a02 a03 a04 a05
2  a06 a07 a08 a09 a10
3  bX1 bX2 bX3 bX4 bX5
4  b06 b07 b08 b09 b10
5  cX1 cX2 cX3 cX4 cX5
6  c06 c07 c08 c09 c10
7  dX1 dX2 dX3 dX4 dX5
8  d06 d07 d08 d09 d10
9  e01 e02 e03 e04 e05
10  e06 e07 e08 e09 e10

 


Written by blacknon

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

Leave a Comment

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

*