sedで特定の文字列~文字列間を置換する

sedでは、ある文字列~文字列間の行を置換する、と言った指定をすることが出来る。

sed '/文字列(開始)/,/文字列(終了)/s/○○○/●●●/g' 対象のファイルPATH

[root@test-centos7 ~]# cat test.txt
testline1="test1"
testline2="test2"

testline3='test7'
testline4='test4'

testline5 test5
testline6 = test6
[root@test-centos7 ~]#
[root@test-centos7 ~]# sed '/line2/,/line3/s/test/aaaa/g' test.txt
testline1="test1"
aaaaline2="aaaa2"

aaaaline3='aaaa7'
testline4='test4'

testline5 test5
testline6 = test6

もちろん、行そのものの入れ替えをすることも可能だ。

[root@test-centos7 ~]# sed '/line2/,/line3/caaaa' test.txt
testline1="test1"
aaaa
testline4='test4'

testline5 test5
testline6 = test6

個人的には、ソースコードなどに記述されている文章を入れ替えたりする際などに役に立つので、結構便利だったりする。