O script awk a seguir é uma aproximação do que eu acho que é sua exigência:
{
for(i=1;i<=NF;i++) {
if (match($i, "F2....$") > 0) {
printf "%s ", substr($i, RSTART + 2, 4);
}
if (match($i, "F6....$") > 0) {
printf "% s", substr($i, RSTART + 2, 4);
}
}
print ""
}
Faz um loop em cada linha e, em seguida, percorre cada campo dessa linha. Para cada elemento, se a extremidade final do elemento tiver "F2" seguida de 4 caracteres, imprima esses 4 caracteres seguidos de um espaço. Uma vez feito o loop de uma linha, imprima um retorno de carro.
A saída, com base na sua entrada, é:
A309 A314
B309 B315
Uma versão atualizada do script awk, para manipular os elementos existentes em qualquer lugar dentro de seu campo, só precisa da $
anchoring removed:
{
for(i=1;i<=NF;i++) {
if (match($i, "F2....") > 0) {
printf "%s ", substr($i, RSTART + 2, 4);
}
if (match($i, "F6....") > 0) {
printf "% s", substr($i, RSTART + 2, 4);
}
}
print ""
}