Só porque é possível fazê-lo, eis que abordagens alternativas podem ser tomadas.
ARGIND com variáveis NR e FNR
Essa abordagem é executada por meio do arquivo duas vezes e, no momento da execução do segundo arquivo, ele imprime uma nova linha, que é obtida por meio de algumas ideias interessantes.
-
Para processar o mesmo arquivo, mas extrair informações diferentes, o arquivo é fornecido na linha de comando duas vezes.
-
Como distinguimos quando estamos executando o primeiro arquivo (para extrair os campos $ 1 e $ 2) e quando através do segundo? Via usando a variável ARGIND
.
-
NR
é o registro total processado até o momento e FNR
é o registro total processado no arquivo atual. Com o primeiro arquivo, eles são os mesmos. Quando eles diferem? Quando chegamos ao segundo arquivo. Neste momento, precisamos imprimir a nova linha, mas de alguma forma evitar que ela seja impressa para outros valores onde NR > FNR
. Nós levantamos um sinalizador (via variável flag).
Exemplo de saída:
$ awk '!flag && NR>FNR {print "";flag=1} ARGIND==1{print ,}ARGIND==2{print ,}' data.txt data.txt
John Bender
Bohn Jender
Jen Bondher
AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543
Uso da cláusula END
Como mencionado nos comentários da resposta do heemayls, ao usar dois comandos awk separados, pode-se usar END
block para imprimir algo assim que o processamento do arquivo estiver completo
$ awk '{print ,}END{print "\n"}' data.txt; awk '{print ,}' data.txt
John Bender
Bohn Jender
Jen Bondher
AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543
Variação no bloco END com matrizes associativas
Como seu bloco de $ 3 é basicamente a mesma coisa repetidamente (string "AGE") você não precisa armazená-lo, mas você pode armazenar $ 4 em array associativo. Em seguida, no bloco END, você pode iterar os valores armazenados depois de imprimir a nova linha.
$ awk '{print ,;age[i++]=}END{print"";for(var in age) print "AGE",age[var]}' data.txt
John Bender
Bohn Jender
Jen Bondher
AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543