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