我使用的是Debian 6和GNU sed,試圖讓awk將du
的輸出從一長串字節轉換爲一個更具人類可讀性的數字,後綴如Mb和Kb。 (我知道你可以使用-h
選項,但我想使用awk手動執行此操作。)與雙星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
wardly混淆? BA達姆tshh
你試圖使用''**作爲指數?那不是'^'? – 2012-03-28 18:19:05
哎呀!你是對的!這解決了它。 – 2012-03-28 18:20:49
這些應該是GiB,MiB和KiB,因爲您使用的是二進制千字節(2 ** 10)。爲了進一步闡明你的代碼,你可以通過'awk -f GiB = ...'或者'BEGIN'模塊預先定義常量作爲變量。 – 2012-03-28 22:08:36