![Holen Sie sich den Dateisystemnamen und die Verwendung mit `df -h`](https://rvso.com/image/50563/Holen%20Sie%20sich%20den%20Dateisystemnamen%20und%20die%20Verwendung%20mit%20%60df%20-h%60.png)
df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//'
Ausgabe:
/prüfen /test/drv0 /test/drv1
df -h | grep test | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//'
Ausgabe:
10 20 15
Ich möchte wissen, wie ich diese Ausgaben wie folgt verbinden kann:
/Test 10 /test/drv0 20 /test/drv1 15
Kann mir jemand helfen?
Antwort1
df -P | sed -n '/test/s/.*[[:blank:]]\(.*\)%[[:blank:]]*\(.*\)/\2 \1/p'
(dabei wird davon ausgegangen, dass die Einhängepunktpfade keine %- oder Zeilenumbruchzeichen enthalten)
Antwort2
Ich denke, ungefähr so: Ich verstehe die ganze Frage allerdings nicht
df -h | awk '/test/{print $1" "$5}' | sed -e ':a;N;$!ba;s/\n/ /g' -e 's/%//g'
Da sich die Frage geändert hat, hier die aktualisierte Antwort
df -h | awk '/test/{print $1, +$5}'
Antwort3
df | awk '/test/ {print $1 " " $5}'
wird drucken
/test 10%
/test/drv0 20%
/test/drv1 15%
Antwort4
Dies ist keine gute Lösung für Ihre spezielle Situation (es funktioniert, ist aber unnötig komplex). Sie sollten die bereits bereitgestellten Antworten verwenden. Ich wollte nur ein weiteres Tool erwähnen, das sehr nützlich ist, wenn Sie die Ausgabe mehrerer Programme zusammenführen möchten 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.
Kombiniert mit BashProzesssubstitutionkönnen Sie die Ausgabe Ihrer beiden Befehle wie folgt kombinieren:
$ 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
Oder um ein einfacheres Beispiel zu verwenden:
$ paste <(echo -e "a\nb\nc") <(echo -e "1\n2\n3")
a 1
b 2
c 3