잘못된 단어 시퀀스를 식별하는 awk 스크립트

잘못된 단어 시퀀스를 식별하는 awk 스크립트

다음과 같은 파일이 있습니다.

FHEAD01
THEAD02
TCUST03
TITEM04
TITEM05
IDISC06
TTEND07
TTAIL08
THEAD09
TCUST10
IDISC11....
TITEM12
TTEND13
TTAIL14
THEAD15
TITEM16
IDISC17
TTEND18
TTAIL19
THEAD20
IDISC21.....
TITEM22
TTEND23
TTAIL24
THEAD25
TITEM26
IDISC27
IDISC28
TITEM29
TTEND30
TTAIL31
FTAIL32

다음 순서를 인식하고 기록을 인쇄하고 싶습니다.

1) THEAD,TCUST,IDISC,*
2) THEAD,IDISC,*

예상 출력은 다음 레코드를 인쇄해야 합니다.

THEAD09
TCUST10
IDISC11
THEAD20
IDISC21

다음 코드를 시도했지만 결과가 없습니다.

awk '/THEAD/; /TCUST/ ; /IDISC/ ' test1.dat

답변1

awk '
    /THEAD/{
        p=$0                 #store line with `THEAD`
        getline              #read next line from file
        if(/TCUST/){         #if there is `TCUST` in it
            p=p ORS $0       #add it to `p` vaiable
            getline          #and get next line from file
            }
        if(/IDISC/)          #if there is `IDISC` in line
            print p ORS $0   #print `p` variable altogether with line
    }
    ' test1.dat

관련 정보