私はDebian 6とGNU sedを使用しています。awkが長い文字列からdu
の出力をMbとKbのような接尾辞を持つ人間が読めるように変換しようとしています。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 } }}"
:(。私はあなたが
-h
オプションを使用することができます知っているが、私はawkを使って手動でこれをやりたい)
これまでのところ、私のコマンドは、この(私はそれを読みやすくするために改行を入れ)のように見えます
は、しかし、私は、二重星の近くに/から構文エラーを取得:私は、すべての二重星**
ただ一つ星*
を作る場合
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
指数として '**'を使用しようとしていますか?それは '^'じゃない? –
あなたが正しい!それはそれを修正した。 –
バイナリキロバイト(2 ** 10)を使用しているので、それらはGiB、MiB、およびKiBである必要があります。あなたのコードをさらに明確にするために、変数を 'awk -f GiB = ...'か 'BEGIN'ブロックのどちらかで事前定義することもできます。 –