extrair linhas de um arquivo de texto, o padrão será identificado pela análise do arquivo

extrair linhas de um arquivo de texto, o padrão será identificado pela análise do arquivo

É necessário extrair linhas de um arquivo txt para outros arquivos, com base no seguinte cenário:

O primeiro padrão a ser correspondido será sempre a linha que começa com a palavra identifier, então o segundo padrão será a primeira linha, que começa com 000:

no exemplo abaixo, será

000: thislineneedstobeextracted  

depois de escrevermos a saída no primeiro arquivo, passamos a extrair as linhas que começam com a palavra identifiere as linhas que começam novamente com 000: mas desta vez, para a segunda ocorrência única encontrada no arquivo, em nosso exemplo,

000: alsothislineneedstobeextracted  

e a saída será gravada no segundo arquivo, etc.

entrada de amostra

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

exemplo de arquivo de saída1.txt:

000: thislineneedstobeextracted  
identifier 767  
identifier 7686    

exemplo de arquivo de saída2.txt:

000: alsothislineneedstobeextracted  
identifier 767  
identifier 7686    

Responder1

Experimente comestranho

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

informação relacionada