Durch den Inhalt einer Datei in Bash durchlaufen
- 4767
- 1428
- Marleen Weight
Bash, die Bourne-on-auf-Shell, ist eine beliebte Befehlszeilenschale und Skriptsprache, die für ihre Einfachheit und Benutzerfreundlichkeit häufig verwendet wird. Eine der häufigsten Aufgaben, die man möglicherweise mit Bash ausführen muss, besteht darin, den Inhalt einer Datei zu durchlaufen.
In diesem Artikel werden wir verschiedene Methoden untersuchen, um den Inhalt einer Datei mithilfe von Bash -Scripting durchzuführen, einschließlich Lesen von Zeile für Zeile und Wort nach Word.
Methode 1: Verwenden des Befehls "while" und "Read"
Der 'während' Schleife kombiniert mit dem 'lesen' Der Befehl ist die häufigste Methode, um den Inhalt einer Datei in Bash zu durchlaufen. Diese Methode liest die Dateizeile für Zeile, die besonders nützlich ist, um große Dateien zu verarbeiten, die möglicherweise nicht in den Speicher passen.
#!/bin/bash fileName = "Beispiel.txt "while ifs = read -r line echo" $ line "erledigt < "$filename"12345678 | #!/bin/bash fileName = "Beispiel.txt "while ifs = read -r linedo echo" $ line "erledigt < "$filename" |
In diesem Beispiel verwenden wir die 'Ifs' (Interne Feldtrennzeichen) Variable, um den Trennzeichen (standardmäßig eine neue Linie) zur Trennung von Feldern in der Eingabe anzugeben. Der 'lesen' Der Befehl liest jede Zeile und die 'Echo' Der Befehl druckt die Zeile zur Konsole.
Methode 2: Verwenden des Befehls "für" Loop und "Cat"
Eine andere Methode, um den Inhalt einer Datei zu durchlaufen. Diese Methode ist weniger effizient als der Befehl "while" und "lesen", da die gesamte Datei vor dem Durchschleifen die gesamte Datei liest.
#!/bin/bash fileName = "Beispiel.txt "für Zeile in $ (Cat" $ Dateiname ") do echo" $ line "erledigt12345678 | #!/bin/bash fileName = "Beispiel.txt "für Zeile in $ (Cat" $ Dateiname ") do echo" $ line "erledigt |
In diesem Beispiel verwenden wir die 'Katze' Befehl zum Lesen des gesamten Inhalts der Datei und der 'für' Loop Iteriert über jede Zeile. Diese Methode spaltet den Inhalt jedoch standardmäßig durch Whitespace (Leerzeichen, Registerkarten und Newlines) auf, was bei der Verarbeitung von Dateien mit mehreren Wörtern pro Zeile zu unerwartetem Verhalten führen kann.
Methode 3: Durchschleifen Wörter mit 'ifs'
Wenn Sie ein Dateiwort nach Wort verarbeiten müssen, können Sie die verwenden 'Ifs' Variable, um den Trennzeichen in einen Raum zu ändern.
#!/bin/bash fileName = "Beispiel.txt "ifs = $ '\ t \ n' für Wort in $ (cat" $ Dateiname ") do echo" $ word "erledigt123456789 | #!/bin/bash fileName = "Beispiel.txt "ifs = $ '\ t \ n'For Word in $ (cat" $ Dateiname ") do echo" $ word "erledigt |
In diesem Beispiel setzen wir die Variable "IFS" auf eine Kombination aus Speicher-, Registerkarten- und Newline -Zeichen, sodass die Schleife über Wörter anstelle von Zeilen iterieren kann.
Methode 4: Verwenden Sie 'awk' für die erweiterte Schleife
Für eine fortgeschrittenere Dateiverarbeitung können Sie den Befehl "awk" verwenden, der ein leistungsstarkes Textverarbeitungstool mit integrierten Schleifenfunktionen ist.
#!/bin/bash fileName = "Beispiel.txt "awk 'für (i = 1; i<=NF; i++) print $i ' "$filename"12345 | #!/bin/bash fileName = "Beispiel.txt "awk 'für (i = 1; i<=NF; i++) print $i ' "$filename" |
In diesem Beispiel, 'awk' ' liest die Datei und die Schleifen durch jedes Feld (Wort) mit den integrierten Variablen durch 'Nf' (Anzahl der Felder) und '$ ich' ' (aktueller Feldwert). Diese Methode ist besonders nützlich für komplexere Textmanipulationsaufgaben.
Abschluss
In diesem Artikel haben wir vier Methoden zum Durchschleifen durch den Inhalt einer Datei in Bash untersucht: Verwenden der 'while' Loop und 'lesen' Befehl, der 'für' Schleife und 'Katze' Befehl, ändern Sie die 'Ifs' Variable, um durch Wörter zu schleifen und die zu verwenden 'awk' ' Befehl zur fortgeschrittenen Schleife. Abhängig von Ihrer Anforderung wählen Sie eine der oben genannten Optionen zum Durchschleifen einer Geldstrafe in einem Shell -Skript.
- « So erstellen Sie ein Verzeichnis, wenn es unter Linux nicht existiert
- Unterschied zwischen Einzel- und Doppelzitaten in Bash »