Comum print
adiciona uma nova linha (o separador de registro de saída), mas printf
não, portanto, podemos usar isso no caso AK3
com um separador explícito entre os campos. No caso AK4
, queremos um separador de campo antes do primeiro campo, e a maneira mais simples de obter isso é imprimir um campo vazio primeiro.
$ awk -F\* '$1=="AK3" { printf "%s", $2 OFS $3 } $1=="AK4" { print "", $4, $5 }' < input
BPS 2 1
RMT 12 7 CR
Isso é facilmente convertido para dar saída com espaçamento de tabulação, basta adicionar -vOFS='\t'
no início da linha de comando.
No entanto, se você quiser colunas com largura fixa, provavelmente será mais fácil usar as configurações printf
e width no formato %s
:
$ awk -F\* '$1=="AK3" { printf "%-3s %-2s", $2, $3 } $1=="AK4" { printf " %-1s %s\n", $4, $5 }' < input
BPS 2 1
RMT 12 7 CR
Os campos extensos continuarão sendo estendidos, a menos que você também indique a largura máxima do campo, por exemplo, %-3.3s
, e isso produzirá uma saída quebrada se as linhas de entrada não estiverem na ordem correta.