Один для GNU awk. Это split
запись по строке цифр и prints
$1
цифр и $ 2 в 5 частях символов:
$ gawk '{
split($0,a,/[0-9]+/,seps)
while(length(a[2])) {
print a[1] seps[1] substr(a[2],1,5)
a[2]=substr(a[2],6)
}
}' file
Вывод:
aaaaa003aaaaa
aaaaa003aaaaa
aaaaa003aaaaa
bbbbb002aaaaa
bbbbb002aaaaa
ccccc004ccccc
ccccc004ccccc
ccccc004ccccc
ccccc004ccccc
Gnu awk только как он использует четвертый параметр split()
, seps .
Обновление: Другая версия:
$ awk '{
while(p=substr($0,9,5)) {
print substr($0,1,8) p
$0=substr($0,1,8) substr($0,14)
}
}'