ファイルシステム名と使用法を取得するには、「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.

バッシュと組み合わせるプロセスの交換、次のように2つのコマンドの出力を組み合わせることができます。

$ 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

関連情報