Я использую Debian 6 и GNU sed, пытаясь заставить awk преобразовать вывод du
из длинной строки байтов в более читабельное число с суффиксами, такими как Mb и Kb. (Я знаю, что вы можете использовать опцию -h
, но я хочу сделать это вручную с помощью awk.)
Пока что моя команда выглядит следующим образом (я вставил символы новой строки, чтобы сделать ее более читабельной):
du /test.img | grep [0-9]* | awk "{ sum=$1 ; hum[1024**3]='Gb';hum[1024**2]='Mb';
hum[1024]='Kb'; for (x=1024**3; x>=1024; x/=1024){ if (sum>=x)
{ printf '%.2f %s\n',sum/x,hum[x];break } }}"
Однако я получаю синтаксические ошибки от / около двойных звездочек:
awk: line 1: syntax error at or near *
awk: line 1: syntax error at or near *
awk: line 1: syntax error at or near *
awk: line 1: extra ')'
awk: line 1: syntax error at or near {
Если я сделаю все двойные звезды **
только одну звезду *
, awk запускается, но я получаю неправильное число.
Что я могу сделать, чтобы исправить эти синтаксические ошибки и перестать быть awk
в замешательстве? ба дум тш