Com awk
, você pode fazer:
awk '{print >out}; /XYZ/{out="file2"}' out=file1 largefile
Explicação: O primeiro argumento awk
( out=file1
) define uma variável com o nome do arquivo que será usado para saída enquanto o argumento subseqüente ( largefile
) é processado. O programa awk
imprimirá todas as linhas no arquivo especificado pela variável out
( {print >out}
). Se o padrão XYZ
for encontrado, a variável de saída será redefinida para apontar para o novo arquivo ( {out="file2}"
) que será usado como destino para imprimir as linhas de dados subseqüentes.
Referências:
- manual do gawk: Redirecionamento link