2016-05-28 9 views
4

私は次のエラーを取得していますawkサブコマンドが失敗するのはなぜですか?

df -hl | grep '/dev/disk1' | awk '{sub(/%/, \"\");print $5}' 

を実行します。

awk: syntax error at source line 1 
context is 
    {sub(/%/, >>> \ <<< "\");} 
awk: illegal statement at source line 1 

私はawkのサブ上の任意のドキュメントを見つけるように見えることはできません。私は理解しているように、それが使用するディスク領域の割合を返す必要があります

df -hl | grep '/dev/disk1' 

戻り

/dev/disk1       112Gi 94Gi 18Gi 85% 24672655 4649071 84% /

。あなたはそれを与えて

これは、コマンドを修正する入力

/dev/disk1       112Gi 94Gi 18Gi 85% 24699942 4621784 84% /
+0

それは入力から85を返すべきでは/ dev/disk1の112Gi 94Gi 18Gi 85%24699942 4621784 84%/ – KinsDotNet

答えて

5

これからの85を返す必要があります。
df -hl | grep '/dev/disk1' | awk '{sub(/%/, ""); print $5 }' 二重引用符をエスケープする必要はありません。

もちろん、ここでgrepを使う必要はありません。

第3引数として、置換対象をsubに指定できます。

サブコマンドはおそらく、あなたが持つだけのdfとawkのにそれを減らすことができますgawkのマニュアルon this page.

+0

'grep'と' awk'の両方を使う必要はありません。 –

4

で説明されています

df --output=pcent /dev/disk1 | awk '/ /{printf("%d\n", $1)}' 
関連する問題