텍스트 파일에서 줄을 추출하면 파일을 구문 분석하여 패턴이 식별됩니다.

텍스트 파일에서 줄을 추출하면 파일을 구문 분석하여 패턴이 식별됩니다.

다음 시나리오에 따라 txt 파일에서 다른 파일로 줄을 추출해야 합니다.

일치하는 첫 번째 패턴은 항상 단어로 시작하는 줄이 되고 identifier, 두 번째 패턴은 다음으로 시작하는 첫 번째 줄이 됩니다 000.

아래 예에서는

000: thislineneedstobeextracted  

출력을 첫 번째 파일에 쓴 후 단어로 시작하는 줄 identifier과 다음으로 시작하는 줄을 다시 추출합니다. 000그러나 이번에는 파일에서 두 번째로 고유한 항목이 발견된 경우 다음 예에서

000: alsothislineneedstobeextracted  

출력은 두 번째 파일에 기록됩니다.

입력 예

identifier 767  
linetobeignored  
anotherlinetobeignored  
000: thislineneedstobeextracted  
000: alsothislineneedstobeextracted  
blankline  
identifier 7686    
linetobeignored  
anotherlinetobeignored  
000: thislineneedstobeextracted  
000: alsothislineneedstobeextracted  
000: ayetanotherlineneedstobeextracted  

출력 file1.txt 예:

000: thislineneedstobeextracted  
identifier 767  
identifier 7686    

예제 출력 file2.txt:

000: alsothislineneedstobeextracted  
identifier 767  
identifier 7686    

답변1

사용해 보세요

awk '
    /^id/{
        if(line[1]){
            for(n in line)print line[n],i,$0 >> "file"n".txt"
            delete(line)
            }
        c=0
        i=$0
        }
    /^000:/{
        line[++c]=$0
        }
    END{
        if(line[1]){
            for(n in line)print line[n],i,$0 >> "file"n".txt"
        }
    ' OFS=\\n txt.file

관련 정보