多くのスペースを占めるファイルシステムを取得しようとしています。df
フラグ(Gigabyte View)を持つコマンドを使用してこの操作を実行しようとしていますが、-g
予想される値を取得できません。
df -g | sed 's/%//g'| awk '+$5>=75 {print}' | head -10
次のコマンドを使用するとエラーが発生します。
df -g | sed 's/%//g'| awk '{print $5>=75}' | head -4
エラーメッセージ:
Syntax Error The source line is 1.
The error context is
{print >>> $5>= <<<
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
以下は、AIXのdf -gコマンドの出力です。
/tmp>df -g | sed 's/%//g'| awk '$5 >= 75 { print }' | head -4
Filesystem GB blocks Free Used Iused Iused Mounted on
/dev/hd4 10.50 10.05 5 16492 1 /
/dev/hd2 25.50 18.15 29 64361 2 /usr
/dev/hd9var 2.50 0.72 72 4521 3 /var
全体を見る:
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 10.50 10.05 5% 16492 1% /
/dev/hd2 25.50 18.15 29% 64357 2% /usr
/dev/hd9var 2.50 1.39 45% 4512 2% /var
/dev/hd3 21.50 20.24 6% 1495 1% /tmp
AIX 7.1 PowerPC_POWER8で試してみました。何が間違っているのかわかりません!
ベストアンサー1
tr
2回使用しないで、awk
awkを1回だけ使用してください。
df -g | awk '{ sub("%", "", $4); if ($4 >= 75) { print $4, $7 }}' | sort -n
これにより、フィールド4のパーセント記号が空の文字列に置き換えられます(削除)。残りの値が75以上の場合、フィールド4と7が印刷され、パイプでソートされます。
メモリベースの改善ステファンの答えの一つ:
df -g | awk '$4+0 >= 75 { print $4, $7 }' | sort -n
「+0」を追加すると、厳密な文字列ベースの比較ではなく、数値比較が強制されます。
タイトルを維持するには、条件を次のように変更してください。
df -g | awk 'NR < 2 || $4+0 >= 75 { print $4, $7 }' | sort -n