hao*_*ike 1 linux bash awk sed
我正在使用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 } }}"
Run Code Online (Sandbox Code Playgroud)
但是,我从双星/附近得到语法错误:
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 {
Run Code Online (Sandbox Code Playgroud)
如果我让所有双星**只有一颗星*,那么awk会运行,但是我得到的数字不正确.
我该怎么做才能解决这些语法错误并且不再如此awk混淆?ba dum tshh