
Es necesario extraer líneas de un archivo txt a otros archivos, según el siguiente escenario:
El primer patrón a comparar será siempre la línea que comienza con la palabra identifier
, luego el segundo patrón será la primera línea, que comienza con 000
:
en el siguiente ejemplo, será
000: thislineneedstobeextracted
Después de haber escrito la salida en el primer archivo, pasamos a extraer las líneas que comienzan con la palabra identifier
y las líneas que comienzan nuevamente con 000
: pero esta vez, para la segunda aparición única encontrada en el archivo, en nuestro ejemplo,
000: alsothislineneedstobeextracted
y la salida se escribirá en el segundo archivo, etc.
entrada de muestra
identifier 767
linetobeignored
anotherlinetobeignored
000: thislineneedstobeextracted
000: alsothislineneedstobeextracted
blankline
identifier 7686
linetobeignored
anotherlinetobeignored
000: thislineneedstobeextracted
000: alsothislineneedstobeextracted
000: ayetanotherlineneedstobeextracted
archivo de salida de muestra 1.txt:
000: thislineneedstobeextracted
identifier 767
identifier 7686
archivo de salida de muestra 2.txt:
000: alsothislineneedstobeextracted
identifier 767
identifier 7686
Respuesta1
Pruebe conawk
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