Articles

Beim Durchlaufen des Inhalts einer Datei in Bash

ist es häufig erforderlich, jede Zeile mit einem Bash-Skript aus einer Datei zu lesen. Es gibt verschiedene Ansätze, um die Zeilen aus einer Datei zu lesen. Im folgenden Beispiel haben wir zuerst beschrieben, wie Sie eine Beispieldatei erstellen und dann ein Skript ausführen, das diese Beispieldatei liest.

Erstellen Sie eine Datei zum Lesen

# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt

Wenn Sie den obigen Code ausführen, erhalten Sie das folgende Ergebnis −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Verwenden Sie Do-While

Bei diesem Ansatz verwenden wir eine do-while-Schleife, um eine Datei zu lesen., Wir geben den Dateinamen als Eingabe am Ende der Datei an. Zuerst erstellen wir ein Skript und geben ihm die Ausführungsberechtigung. Dann kann nur die Datei gelesen und das Ergebnis angezeigt werden.

#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt

Das Ausführen des obigen Codes ergibt folgendes Ergebnis −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Verwenden von for und in

Im nächsten Ansatz verwenden wir eine for-Schleife zusammen mit der in-Klausel. Hier speichern wir das Ergebnis des Befehls cat (jede Zeile) in einer Variablen, die Teil der for Schleife ist, und geben die Variable wieder.,

#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done

Wenn wir den obigen Code ausführen, erhalten wir das folgende Ergebnis −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Mit nur echo

können wir den Inhalt der Datei auch abrufen, indem wir nur echo. Das Ergebnis wird jedoch als Zeilenarray ausgegeben und als einzeilige Ausgabe ausgedruckt, die eine Kombination aller Zeilen anzeigt.

echo $( < a_file.txt )

Wenn wir den obigen Code ausführen, erhalten wir das folgende Ergebnis:

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Datei mit Leerzeilen lesen

Wenn eine Datei einige Zeilen enthält, die leer sind, können wir sie in der Ausgabe vermeiden, indem wir den folgenden Code verwenden., Dies verwendet das IFS (internal Field Separator) wird auf leere Zeichenfolge gesetzt, so dass die Leerzeilen als Feldtrennzeichen behandelt und in der Ausgabe vermieden werden. Angenommen, es gibt Leerzeilen zwischen der 3.und 4. Zeile, werden diese leeren Pfandrechte nicht gedruckt.

#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt

Das Ausführen des obigen Codes gibt uns das folgende Ergebnis −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Veröffentlicht am 03-Jan-2020 11:45:05