Ich möchte eine Methode zum Erfassen der Festplattennutzung einer bestimmten Partition mithilfe des Verzeichnisses, in dem die Partition bereitgestellt ist. Die Ausgabe sollte nur eine Ganzzahl ohne Auffüllung oder folgende Symbole sein, da ich sie in einer Variablen speichern möchte.
Ich habe verwendet df --output=pcent /mount/point
, aber ich muss die Ausgabe zuschneiden, da sie einen unnötigen Header, ein einfaches Leerzeichen vor dem Wert und ein% -Symbol nach dem Wert wie folgt hat:
Use%
83%
In diesem Fall wäre die Ausgabe, die ich möchte, einfach 83
. Ich kenne keine Nachteile bei der Verwendung der Ausgabe von df
, bin aber froh, andere Methoden zu akzeptieren, die sich nicht darauf stützen.
command-line
bash
scripts
disk-usage
Arronisch
quelle
quelle
tr
, ich habe meinen Kopf durcheinander gebracht mit sed und awk Ideen.Antworten:
Ich würde verwenden ...
Ich bin nicht sicher, ob sed schneller ist, aber ich kann mich nie an die sed-Werte erinnern.
quelle
time
Testen ist es genauso schnell wie sed.tr
ist leichter zu lesen alssed
.Hier ist awk Lösung:
Grundsätzlich geschieht hier, dass wir das Zeichen '%' als Feldtrennzeichen (Spaltentrennzeichen) behandeln und die erste Spalte $ 1 nur dann ausgeben, wenn die Anzahl der Datensätze gleich zwei ist (der
NR==2
Teil).Wenn wir
bash
nur Tools verwenden möchten, können wir Folgendes tun:Und zum Spaß, alternativ
sed
via Capture Group und-r
für erweiterten Regex:quelle
sed
Lösung1d
lösche die erste Zeile;
Befehle zu trennens/^ //
Entfernen Sie ein Leerzeichen vom Zeilenanfangs/%//
%
Zeichen entfernenquelle
Sie können eine Pipe an eine senden,
grep
die nur Ziffern extrahiert:Sehen Sie es live:
quelle
Ich bin auf einen Server gestoßen, auf dem --output = pcent noch nicht implementiert war, also habe ich die normale Ausgabe verwendet, gefiltert nach Spalten, gefolgt von dem regulären Ausdruck:
df /mount/point | awk '{print $5}' | tr -dc '0-9'
quelle
Bash zweistufige Lösung
Als Fan von Borne Again SHell dachte ich letztes Jahr, ich würde eine Lösung dafür vorschlagen.
df
Ausgabe in eine VariableDF_PCT
.DF_PCT
und zeigt es auf dem Bildschirm an.5
in diesem Fall) generiert wurde.quelle
Hier ist eine andere Lösung:
quelle