
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