awk文字列検索してそれ以降を抜き出す

ある文字列を検索して、それ以降に存在する(と)の間の行を表示するawkスクリプトです。
inputファイル

$ cat input.txt
aaaaa
bbbbb
cccc
dddd
ffff
start_ABCD_ssss
eeeee
ggggg
hhhhh
(
Hit 1
Hit 2
Hit 3
Hit 4
Hit 5
)
6
7
8
9
0
end

awkコマンド

$ cat awk.sh
awk -v search_string="start_[0-9a-zA-Z]{0,5}.+" '
    {
        if (match($0, search_string)) {
            start_flag = 1
        } else if (start_flag) {
            if (index($0, "(") > 0) {
                start_flag2 = 1
            } else if (start_flag2) {
                if (index($0, ")") > 0) {
                    exit
                } else {
                    print $0
                }
            }
        }
    }
' input.txt

実行結果

$ ./awk.sh
Hit 1
Hit 2
Hit 3
Hit 4
Hit 5

以上

いいなと思ったら応援しよう!