Se você tem o GNU awk, é possível especificar larguras de campo explícitas, por exemplo,
$ printf 'aaaaaabbbbbccccdddddeeeffffff\n' |
gawk -v FIELDWIDTHS="6 5 4 5 3 6" -v OFS="^" '{print $1, $2, $4, $6}'
aaaaaa^bbbbb^ddddd^ffffff
A partir da versão 4.2, você pode ignorar caracteres usando uma sintaxe n:m
, por exemplo,
printf 'aaaaaabbbbbccccdddddeeeffffff\n' |
gawk -v FIELDWIDTHS="6 5 4:5 3:6" -v OFS="^" '{$1=$1} 1'
aaaaaa^bbbbb^ddddd^ffffff
(o $1=$
apenas força a reavaliação de $0
com as larguras de campo especificadas).
Veja, por exemplo, O Guia do Usuário do GNU Awk: 4.6 Lendo Dados de Largura Fixa