awk, sed 또는 grep을 사용하여 텍스트 파일에서 일련의 행 패턴을 확인하는 방법은 무엇입니까?

awk, sed 또는 grep을 사용하여 텍스트 파일에서 일련의 행 패턴을 확인하는 방법은 무엇입니까?

100줄이 포함된 파일을 읽고 패턴을 찾는 bash 스크립트를 작성하고 싶습니다. def <space>해당 줄에서 패턴이 발견되면 다음 줄을 확인하여 패턴이 '''다음 줄에 있는지 확인합니다. 그렇다면 '''다음 항목이 5줄 떨어진 곳에 있는지 확인하세요. 모두 "예"이면 TRUE를 에코하고, 그렇지 않으면 FALSE를 에코합니다.

예를 들어 파일 1:

line 1
line2
...

    def something...
        '''
        random text
        rand..text
        rand..
        ra..


        '''

에코 정확

파일 2:

line 1
line 2
...

    def something..
        int a
        ...

에코 오류

def <space>파일에는 이러한 패턴이 여러 개 있을 수 있으며 , 그 중 하나라도 테스트에 실패하면 전체 결과는 FALSE입니다.

awk, grep또는을 사용하여 이 작업을 수행하려면 어떻게 해야 합니까 sed?

답변1

한번 시도해 보면 이것이 당신이 찾고 있는 것인지 설명될 것입니다.

 grep -A5 "def " file.txt | grep -n "'''" | awk -F ':' '{print $1}' | tr '\n' ' ' | awk  '{if ($1 == "2" && $2 == "" ) print "TRUE";else print "FALSE"}'

관련 정보