Ich habe diese Frage gelesen Lesen Sie n Zeichen aus einer Textdatei mit bash. Ich würde gerne wissen, wie man ein Wort nach dem anderen aus einer Datei liest, die wie folgt aussieht:
%Vor%Kann mir das jemand erklären oder mir ein einfaches Beispiel zeigen? Danke!
Der Befehl read
liest standardmäßig ganze Zeilen. Die Lösung besteht wahrscheinlich darin, die gesamte Zeile zu lesen und sie dann auf Whitespace z. for
:
Dies geschieht mit der Standardeingabe, indem Sie das Flag -a
zum Lesen übergeben:
Dies liest Ihre gesamte Zeile in eine indizierte Array-Variable, in diesem Fall Wörter genannt. Sie können dann beliebige Array-Operationen an Wörtern mit Shell-Parameter-Erweiterungen .
Für Datei-orientierte Operationen unterstützen aktuelle Versionen von Bash auch die integrierte Map-Datei . Zum Beispiel:
%Vor%Wie auch immer, Arrays sind der richtige Weg. Es lohnt sich, sich mit der Bash-Array-Syntax vertraut zu machen, um diese Funktion optimal zu nutzen .
Normalerweise sollten Sie mit einer while read -r line
-Schleife aus einer Datei lesen. Um dies zu tun und die Wörter in den Zeilen zu analysieren, muss eine for
-Schleife in der while
-Schleife verschachtelt werden.
Hier ist eine Technik, die ohne verschachtelte Schleifen funktioniert:
%Vor%In dem Kontext, in dem die Anzahl der Wörter bekannt ist:
%Vor% Wenn Sie jede Zeile in ein Array einlesen möchten, fügt read -a
das erste Wort in Element 0 Ihres Arrays, das zweite in Element 1 usw. ein:
Ich bin auf diese Frage und die vorgeschlagenen Antworten gestoßen, aber ich sehe diese einfache mögliche Lösung nicht:
%Vor%Tags und Links bash