shell-Skript: Auslesen eines bestimmten Strings aus der Datei
hier ist der Inhalt der Datei:
CPU revision : 0
Hardware : nomen TOS 9900 (Flattened Device Tree)
Revision : nomen TOS 8800 (Flattened Device Tree)
Serial : 0000
Einsatz von Linux-shell-Skript, das ich brauche, um diese Datei zu Lesen und bekommen nur 9900 (von der Hardware: - Zeile) in einen string, was ist der beste Weg? danke!
Was haben Sie versucht? Zeigen Sie uns Ihre Arbeit, und wir werden Ihnen helfen, reparieren die Fehler. Und in Ihrem Beispiel für die Eingabe, was sind die anderen möglichen Werte der "Hardware" - Linie?
InformationsquelleAutor rodee | 2013-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da der Umfang der Informationen, die Sie bereitgestellt haben, dies ist eine wirklich einfache Aufgabe mit einer Vielzahl von Werkzeugen.
Awk sieht für ein Spiel auf einem Ausdruck, trennt dann die Zeile in Felder getrennt durch Leerzeichen.
$1
ist das erste Wort, das$5
ist die fünfte "Wort".Den sed-Befehl kann auch Befehle ausführen, auf den Strecken, genau abgestimmt auf die spezifische regexes. In diesem Fall, für die "Hardware" - Zeilen, wir ersetzen jedes nicht-numerische Zeichen, die mit null, was natürlich nichts an der Zahl. Dieser trennt die von der Art, anstatt von Feld. (Sie wusste nicht, was Sie versuchen zu erreichen.)
Und schließlich:
Ohne externe tools, das findet die Linie mit bash alleine. Beachten Sie, dass diese Art von array-Verweis funktioniert nicht in älteren Bourne-Stil Schalen. Aber wenn man in Linux oder OSX, Ihre Schale ist wahrscheinlich die bash standardmäßig.
Und wenn Sie sich Fragen, über
"${this[4]}"
, die "4" ist, weil bash arrays sind nummeriert von null, während awk Zeilen-Wort-split ab$1
.Könnten wir tun dies im non-bash-shell als gut, aber es wäre viel mehr Arbeit, und wird wahrscheinlich nicht einen one-liner.
InformationsquelleAutor ghoti