sedのお勉強2 特定文字列に一致した次の行を操作するスクリプト
前回の内容を応用して、特定文字列に一致した次の行を操作するスクリプトを書いてみる。
昨日と同じくこんなテストファイル
[root@testsv sedtest]# cat sedtest.txt 1111 2222 3333 4444 5555 6666 7777 8888 9999 0000
nを使って2222の行の次の行が3333ならば表示する。
[root@testsv sedtest]# sed -n '/2222/{n;/3333/p}' sedtest.txt 3333
逆に2222の行の次の行が3333ならば削除する。
[root@testsv sedtest]# sed '/2222/{n;/3333/d}' sedtest.txt 1111 2222 4444 5555 6666 7777 8888 9999 0000
2222の行の次の行が3333ならば削除する&&削除した次の行が4444ならば「tikan」という文字列に置換する。
[root@testsv sedtest]# sed -e '/2222/{n;/3333/d}' -e 's/4444/tikan/' sedtest.txt 1111 2222 tikan 5555 6666 7777 8888 9999 0000
2222の行の次の行が3333ならば、「tikan」という文字列に置換する。
[root@testsv sedtest]# sed -e '/2222/{n;s/3333/tikan/}' sedtest.txt 1111 2222 tikan 4444 5555 6666 7777 8888 9999 0000
{}の中は;で区切ってどんどん繋ぐことができる。
[root@testsv sedtest]# sed -e '/2222/{n;s/3333/tikan/;n;s/4444/tikan2/}' sedtest.txt 1111 2222 tikan tikan2 5555 6666 7777 8888 9999 0000
次はホールドスペースのお勉強かな〜。