`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と組み合わせるプロセス置換次のように 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

関連情報