Не могли бы вы попробовать следующее, я пытаюсь по-другому для предоставленных образцов. Написано и протестировано только с предоставленными образцами.
Для получения значений перед BULK SPACE попробуйте:
awk '
{
line=$0
while(match($0,/[[:space:]]+/)){
arr=arr>RLENGTH?arr:RLENGTH
start[arr]+=RSTART+prev_start
prev_start=RSTART
$0=substr($0,RSTART+RLENGTH)
}
var=substr(line,1,start[arr]-1)
sub(/ +$/,"",var)
print var
delete start
var=arr=""
}
' Input_file
Вывод будет следующим.
22 30 31 3a 31 32 3a 32
30 32 30 20 32 32 3a 31
Для получения значений после BULK SPACE попробуйте:
awk '
{
line=$0
while(match($0,/[[:space:]]+/)){
arr=arr>RLENGTH?arr:RLENGTH
start[arr]+=RSTART+prev_start
prev_start=RSTART
$0=substr($0,RSTART+RLENGTH)
}
var=substr(line,start[arr])
sub(/^ +/,"",var)
print var
delete start
var=arr=""
}
' Input_file
Вывод будет следующим:
" 0 9 : 1 2 : 2
1 2 7 2 2 : 1