TEST 헤더에만 표시되고 FIRST, SECOND 또는 THIRD 헤더에는 표시되지 않는 변수를 찾는 Perl 스크립트를 작성하고 싶습니다. 따라서 파일에는 TEST 헤더 앞에 N개의 변수가 있지만 TEST 헤더 뒤에 있는 변수를 일치시키고 싶습니다. TEST 제목에 인쇄해야 할 변수가 없는 경우 variable not exist in first TEST
(또는두 번째 테스트또는세 번째 테스트).
아래와 같은 파일이 있습니다.
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