
É 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 identifier
e 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