HOWTO · Bash

Dateizeilen in Bash lesen

Dies liest eine Datei Zeile für Zeile in der Bash mit dem read-Befehl.

Dieses Tutorial liest eine Datei Zeile für Zeile in einem Bash-Skript mit dem Befehl read.

Hier ist der Inhalt der Textdatei, die wir verwenden werden.

 john\n ,
james\n ,
joe,
jack,
jill

Datei zeilenweise in der Bash mit dem Befehl read lesen

Die Datei names.txt wird in die Schleife while umgeleitet. Der Befehl read verarbeitet jede Zeile in der Datei und weist sie der Variablen p zu, und der Befehl echo zeigt sie an. Sobald alle Zeilen verarbeitet sind, stoppt die while-Schleife. Der Befehl read ignoriert die führenden Leerzeichen, was in einigen Fällen irreführend sein kann.

printf "Names\n"
while read p;
do
    echo "$p"
done <names.txt

Ausgabe:

Names
johnn ,
jamesn ,
joe,
jack,
jill

Datei zeilenweise lesen in der Bash mit IFS und -r Option

Standardmäßig entfernt der Befehl read alle führenden Whitespaces und interpretiert den Backslash als Escape-Zeichen. Wir fügen die Option -r hinzu, um Backslash-Escaping zu deaktivieren und das Trimmen von Leerzeichen zu deaktivieren, sodass der interne Feldtrenner (IFS) gelöscht wird.

printf "Names\n"
while IFS= read -r line; do
    printf '%s\n' "$line"
done < names.txt

Ausgabe:

Names
 john\n ,
james\n ,
joe,
jack,
jill