awk - 2つのフィルタを1つに結合

awk - 2つのフィルタを1つに結合

ルートパーティションで利用可能なMBを表示するように設定されたUbuntu 12.04のbashスクリプトには、この変数があります。

AV_MB=$(df -m |awk NR==2 |awk '{print $4}')

これら2つのawk表現を1つにまとめるエレガントな方法はありますか?それとも、sed、grep、またはcutを使用するより短い方法ですか?

ベストアンサー1

Awkは「pattern {action}」モデルで動作するため、これら2つの手順を1つの正しい手順にまとめることができます。

 df -m | awk 'NR==2 {print $4}'

ただし、2番目のレコードが変更される可能性があるため(私のシステムでは、ルートレコードは3行目です)、これは脆弱であるため、次のようにルートファイルシステムレコードの最後のフィールドを一致させることができます。

df -m | awk '$NF == "/" {print $4}'

dfこれにより、印刷するたびにパターンが一致します/

おすすめ記事