2007年10月28日日曜日

From To

テキストファイルよりある文字列の含まれる行から、ある文字列の含まれる行までを抽出する。sedって、奥が深い。
indou@LANTANK:/tmp$ uname -a
Linux LANTANK 2.4.21 #48 2004年 11月 19日 金曜日 10:46:05 JST sh4 GNU/Linux
indou@LANTANK:/tmp$ cat test.txt
1 xxxxxxxxxxxxxxxxxxxxxx
2 Beginaaaaaaaaaaaaaa
3 bbbbbbbbbbbbbbb
4 cccccccccccccccccc
5 ddddddddddddEnddddd
6 eeeeeeeeeeeeeeeeee
7 Beginaaaaaaaaaaaaaa
8 bbbbbbbbbbbbbbb
9 cccccccccccccccccc
10 ddddddddddddEnddddd
11 kkkkkkkkkkkkkkkkkkkkBegin
indou@LANTANK:/tmp$ sed -n "/Begin/,/End/p" test.txt
2 Beginaaaaaaaaaaaaaa
3 bbbbbbbbbbbbbbb
4 cccccccccccccccccc
5 ddddddddddddEnddddd
7 Beginaaaaaaaaaaaaaa
8 bbbbbbbbbbbbbbb
9 cccccccccccccccccc
10 ddddddddddddEnddddd
11 kkkkkkkkkkkkkkkkkkkkBegin
indou@LANTANK:/tmp$
indou@pb4:~/tmp ()$ uname -a
Darwin pb4.local 8.10.0 Darwin Kernel Version 8.10.0: Wed May 23 16:50:59 PDT 2007; root:xnu-792.21.3~1/RELEASE_PPC Power Macintosh powerpc
indou@pb4:~/tmp ()$ cat test.txt
xxxxxxxxxxxxxxxxxxxxxx
Beginaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
cccccccccccccccccc
ddddddddddddEnddddd
eeeeeeeeeeeeeeeeee
Beginaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
cccccccccccccccccc
ddddddddddddEnddddd
kkkkkkkkkkkkkkkkkkkkBegin
indou@pb4:~/tmp ()$ sed -n "/Begin/,/End/p" test.txt
Beginaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
cccccccccccccccccc
ddddddddddddEnddddd
Beginaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
cccccccccccccccccc
ddddddddddddEnddddd
kkkkkkkkkkkkkkkkkkkkBegin
indou@pb4:~/tmp ()$