忘れやすいので、備忘として残しておく。 sedで行範囲(n~m行)とパターン(指定した文字列を含むか否か)を同時に満たしている行に対してのみ処理を行いたい場合、以下の様にする。
sed 'n,m{/pattern/s/Before/After/g}'
[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