Wie kann ich Wörter (anstelle von Zeilen) aus einer Datei lesen?

9

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!

    
maniat1k 07.06.2012, 12:36
quelle

5 Antworten

9

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 :

%Vor%     
Some programmer dude 07.06.2012, 12:42
quelle
14

Dies geschieht mit der Standardeingabe, indem Sie das Flag -a zum Lesen übergeben:

%Vor%

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 .

    
Todd A. Jacobs 07.06.2012 12:53
quelle
6

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%     
Dennis Williamson 07.06.2012 16:59
quelle
3

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:

%Vor%     
Charles Duffy 01.08.2017 16:26
quelle
0

Ich bin auf diese Frage und die vorgeschlagenen Antworten gestoßen, aber ich sehe diese einfache mögliche Lösung nicht:

%Vor%     
Michele Pinamonti 02.03.2018 21:48
quelle

Tags und Links