ファイル内の文字列を見つけるためにPerlスクリプトを作成するにはどうすればよいですか? [閉鎖]

ファイル内の文字列を見つけるためにPerlスクリプトを作成するにはどうすればよいですか? [閉鎖]

TESTヘッダーにのみ表示され、FIRST、SECOND、またはTHIRDヘッダーには表示されない変数を検索するPerlスクリプトを作成したいと思います。したがって、ファイルにはTESTヘッダーの前にN個の変数がありますが、TESTヘッダーの後ろにある変数を一致させたいと思います。 TESTタイトルに印刷する変数がない場合variable not exist in first TEST(または2回目のテストまたは3回目のテスト)。

以下のファイルがあります。

FIRST
there is a variable one

SECOND
there is second variable

THIRD
there is third variable

FOUR
xxx
xxx

FIVE
variable
xxx

TEST1
firstline 001
secondline 002
thirdvariable line 003

TEST2
firstline 001
secondline 002
thirdline 003

TEST3
firstline 001
secondline 002
thirdvariable line 003

答え1

私はこれを使用しますawk(私はawk楽しみを知っているからです!)。

awk -vRS='TEST[[:digit:]]' 'BEGIN{rs=RS} NF>1 && $1 ~ rs{ print $1":";$1=""; print $0;}
    NF==1{print "variable not exist in: "$1}' RS='' infile

与えられたサンプルデータに対して、以下の出力が提供されます。

TEST1:
 firstline 001 secondline 002 thirdvariable line 003
TEST2:
 firstline 001 secondline 002 thirdline 003
TEST3:
 firstline 001 secondline 002 thirdvariable line 003
variable not exist in: TEST4
variable not exist in: TEST5

関連情報