Использование GNU awk и split
s seps для злоупотребления .B
в качестве разделителя для отделения числа и единицы от переменной при использовании (GNU) awk:
$ echo 139506MB | awk '{split($1,a,/.B/,seps);print seps[1],a[1]}'
MB 139506
Кроме того, в отношении вашего кода: вы (пытаетесь) установить index
из M
в строке KMGTPEZY
, поэтому я предполагаю, что вы ищете ex==2
.Исправив substr
, как показано ниже:
$ echo 139506MB | awk '{
ex = index("KMGTPEZY", substr($1, length($1)-1,1)); # from substr($1, length($1))
# ex = substr($1, length($1)-1,1); # uncomment for the unit
val = substr($1, 0, length($1) - 2);
print ex " " val
}'
2 139506
Возможно, вам следует обновить OP с ожидаемым выводом.