Effizientes Lesen einer Dateizeile nach Zeile in einem Shell -Skript

Effizientes Lesen einer Dateizeile nach Zeile in einem Shell -Skript

Das Lesen einer Dateizeile nach Zeile ist in vielen Shell -Skripten eine gemeinsame Aufgabe, da Sie jede Zeile einer Datei separat verarbeiten und Aktionen basierend auf dem Inhalt jeder Zeile ausführen können. Es gibt verschiedene Möglichkeiten, eine Dateizeile nach Zeile in einem Linux -Shell -Skript zu lesen, aber einige Methoden sind effizienter als andere. In diesem Artikel werden wir einige der effizientesten Möglichkeiten untersuchen, eine Dateizeile nach Zeile in einem Linux -Shell -Skript zu lesen.

Verwenden Sie während der Schleife

Die grundlegendste Möglichkeit, eine Dateizeile nach Zeile in einem Shell -Skript zu lesen. Der Befehl read liest eine Eingabezeile aus der Datei und speichert sie in einer Variablen, die dann vom Skript verarbeitet werden kann. Die while -Schleife ermöglicht es Ihnen, die Zeilen der Datei bis zum Ende des Endes durchzusetzen. Hier ist ein Beispiel dafür, wie dies aussehen könnte:

#!/usr/bin/env Bash # Lesen Sie die Dateizeile für Zeile während der Lesenzeile; Verarbeiten # verarbeiten einzeln < file.txt
1234567#!/usr/bin/env Bash # Lesen Sie die Dateizeile nach Linie, während Lesen Zeile gelesen; Verarbeiten # verarbeiten einzeln < file.txt

Diese Methode ist einfach und leicht zu verstehen, hat aber einige Einschränkungen. Eine Einschränkung besteht. Darüber hinaus kann der Befehl read nur aus Standardeingaben (STDIN) lesen, sodass Sie die verwenden müssen < operator to redirect the contents of the file to stdin. This can be inconvenient if you need to read from multiple files or if you want to read from a file that is not in the current directory.

Verwenden Sie während der Schleife mit Katze

Eine effizientere Möglichkeit, eine Dateizeile nach Zeile in einem Shell -Skript zu lesen, besteht darin, den CAT -Befehl in Kombination mit einer Weile -Schleife zu verwenden. Der CAT -Befehl liest eine Datei und gibt ihren Inhalt auf STDOut aus. Hier ist ein Beispiel dafür, wie dies aussehen könnte:

#!/usr/bin/env Bash # Lesen Sie die Dateizeile für Zeile während der Lesenzeile; Verarbeiten # verarbeiten einzeln < <(cat file.txt)
1234567#!/usr/bin/env Bash # Lesen Sie die Dateizeile nach Linie, während Lesen Zeile gelesen; Verarbeiten # verarbeiten einzeln < <(cat file.txt)

Diese Methode ist effizienter als der Befehl read, da sie die gesamte Datei gleichzeitig in den Speicher liest, anstatt jeweils eine Zeile zu lesen. Dies kann für große Dateien mit vielen Zeilen schneller sein. Darüber hinaus kann der CAT -Befehl aus jeder Datei, nicht nur aus STDIN.

Verwenden Sie während der Schleife mit SED

Eine weitere effiziente Möglichkeit, eine Dateizeile nach Zeile in einem Shell -Skript zu lesen. Der SED -Befehl ist ein leistungsstarkes Textverarbeitungswerkzeug, mit dem eine Datei gelesen und deren Inhalt auf STDOut ausgegeben werden kann, eine Zeile gleichzeitig. Hier ist ein Beispiel dafür, wie dies aussehen könnte:

#!/usr/bin/env Bash # Lesen Sie die Dateizeile für Zeile während der Lesenzeile; Verarbeiten # verarbeiten einzeln < <(sed -n -e 1p file.txt)
1234567#!/usr/bin/env Bash # Lesen Sie die Dateizeile nach Linie, während Lesen Zeile gelesen; Verarbeiten # verarbeiten einzeln < <(sed -n -e 1p file.txt)

Diese Methode ähnelt dem CAT -Befehl, ist jedoch effizienter, da sie nur eine Zeile gleichzeitig ausgibt. Dies kann für große Dateien mit vielen Zeilen schneller sein. Darüber hinaus enthält der SED -Befehl viele Optionen und Funktionen, mit denen die Ausgabe manipuliert werden kann. Daher ist er ein sehr flexibles Werkzeug für die Textverarbeitung.

Zusammenfassend gibt es verschiedene Möglichkeiten, eine Dateizeile nach Zeile in einem Linux -Shell -Skript zu lesen.