我正在使用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
感到困惑? ba dum tshh