使用“df -h”取得檔案系統名稱和用法

使用“df -h”取得檔案系統名稱和用法
 df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//'

輸出:

/測試
/測試/drv0
/測試/drv1
 df -h  | grep test  | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//'

輸出:

10
20
15

我想知道如何加入這些輸出​​,如下所示:

/測試10
/測試/drv0 20
/測試/drv1 15

有人能幫我嗎?

答案1

df -P | sed -n '/test/s/.*[[:blank:]]\(.*\)%[[:blank:]]*\(.*\)/\2 \1/p'

(假設安裝點路徑不包含 % 或換行符號)

答案2

我認為如下。但我不明白整個問題

df -h | awk '/test/{print $1" "$5}' | sed -e ':a;N;$!ba;s/\n/ /g' -e 's/%//g'

由於問題已更改,這是更新的答案

df -h | awk '/test/{print $1, +$5}'

答案3

df | awk '/test/ {print $1 " " $5}'

將列印

/test 10%
/test/drv0 20%
/test/drv1 15%

答案4

對於您的特定情況來說,這不是一個好的解決方案(它有效,但不必要地複雜),您應該使用已經提供的答案。我只是想提一下另一個工具,當您想要加入多個程式的輸出時,該工具非常有用paste

DESCRIPTION
   Write  lines  consisting  of  the sequentially corresponding lines from
   each FILE, separated by TABs, to standard output.   With  no  FILE,  or
   when FILE is -, read standard input.

與bash結合流程替代,您可以像這樣組合兩個命令的輸出:

$ paste  <(df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//') \
       <(df -h  | grep test  | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//')
 /test 10
 /test/drv0 20
 /test/drv1 15

或者,使用一個更簡單的例子:

$ paste <(echo -e "a\nb\nc") <(echo -e "1\n2\n3")
a   1
b   2
c   3

相關內容