Você está super perto de uma solução de trabalho. Aqui está uma maneira de fazê-lo (formatado para legibilidade):
awk '{
match($0,/F2/);
a=substr($0, RSTART +2, RLENGTH +3);
match($0,/F6/);
b=substr($0, RSTART +2,RLENGTH +4);
print a" "b
}'
Nesse caso, estou pegando as duas funções substr()
e atribuindo-as às variáveis, em vez de imprimi-las diretamente e, em seguida, configurando-as para imprimir ao mesmo tempo no final. Ao imprimi-los em uma única chamada de impressão, awk
adiciona apenas um único caractere de nova linha no final da linha, em vez de após cada parte da linha, que é o que dividia seu resultado em duas linhas.
bash:~$ echo F1B308F2B3094F3B310F4B317CF5B312F6BC313DF7B315 | awk '{match($0,/F2/); a=substr($0, RSTART +2, RLENGTH +3); match($0,/F6/); b=substr($0, RSTART +2,RLENGTH +4); print a" "b}'
B3094 BC313D