df出力のコンテンツフィルタリング

df出力のコンテンツフィルタリング

サーバーからファイルシステム使用量を取得するには、次のコマンドがあります。

df -k | awk '{print $5 " " $6}' | grep %

実行後の結果は次のとおりです。

97% /
0% /proc
0% /etc/mnttab
0% /dev/fd
46% /var
1% /var/run
1% /tmp
54% /opt/app/oracle
22% /opt/app/proviso

私の質問は、埋め込まれた行を消去するにはどうすればよいですか97% /

答え1

次のコマンドを使用してフィルタリングしてクリーンアップできますawk

df -k | awk '/%/ && NR > 2 {print $5 " " $6}'

/%/そして同じことをしていますgrep %

NR > 2ラベルと線をフィルタリングします/

答え2

tail を使用して最初の行を削除できます。

df -k | awk '{print $5 " " $6}' | grep % | tail --lines +2

+22行目から始まるすべての行を印刷したいことを示します。

答え3

df次のように返すまでは問題ありません。

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_root
                  367G  246G  103G  71% /
tmpfs                  48G     0   48G   0% /dev/shm

これは明らかにスクリプト/コマンドを破るでしょう。だから私はあなたに提案します常にスクリプトのコマンド-Pにキーを適用するdf
元の質問に関連する単純な正規表現を使用してこれを行います。

df -Ph  |awk '{if($6 ~ /^\/.+/) print $5, $6}'

関連情報