Ich möchte das machen:
- Führen Sie einen Befehl aus
- Erfassen Sie die Ausgabe
- Wählen Sie eine Zeile
- Wählen Sie eine Spalte dieser Zeile aus
Nehmen wir als Beispiel an, ich möchte den Befehlsnamen von a erhalten $PID(bitte beachten Sie, dass dies nur ein Beispiel ist. Ich schlage nicht vor, dass dies der einfachste Weg ist, einen Befehlsnamen von einer Prozess-ID zu erhalten - mein eigentliches Problem ist mit ein anderer Befehl, dessen Ausgabeformat ich nicht steuern kann).
Wenn ich renne, psbekomme ich:
PID TTY TIME CMD
11383 pts/1 00:00:00 bash
11771 pts/1 00:00:00 ps
Jetzt mache ich ps | egrep 11383und bekomme
11383 pts/1 00:00:00 bash
Nächster Schritt : ps | egrep 11383 | cut -d" " -f 4. Ausgabe ist:
<absolutely nothing/>
Das Problem besteht darin, dass cutdie Ausgabe um einzelne Leerzeichen gekürzt wird und beim psHinzufügen einiger Leerzeichen zwischen der 2. und 3. Spalte cuteine leere Zeichenfolge ausgewählt wird , um die Ähnlichkeit mit einer Tabelle beizubehalten. Natürlich könnte ich gebrauchencut das 7. und nicht das 4. Feld auswählen, aber wie kann ich wissen, insbesondere wenn die Ausgabe vorher variabel und unbekannt ist.