双星的awk语法错误**

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

Dan*_*ego 7

只是为了让它"正式"(作为答案)......

你正在使用**取幂.在awk,^运算符用于取幂.我想在互联网上有很多参考文献,但我发现的是这里的.