Linux Bash: Datei zeilenweise abarbeiten

Ein kleines Problem unter Bash ist es wenn man (ohne sed oder awk) eine Datei parsen will.. aber nicht mit cut oder grep sondern noch manuell 🙂

dafür gibt es 2 Möglichkeiten die ich euch hier zeigen möchte:

1
2
3
4
5
6
7
8
9
for entry in `cat liste.txt`
do
echo $entry
done
# ODER zeilenweise (beachtet nur \r\n):
while read entry
do
echo $entry
done < "liste.txt"

Wie ihr seht könnt ihr mit for auch so was durchlaufen oder der Trick mit dem < wo man while mit Daten füttern kann – eigentlich verständlich 😀

Es gibt aber einen Entscheidenden Grund nicht for zu nutzen!

for nimmt beim parsen nicht nur Zeilenumbrüche als Trennzeichen sondern auch Tab und Leerzeichen!! Habt ihr also Textdokumente könnt ihr diese nicht zeilenweise ausgeben. Hier hilft nur die 2. Variante mit READ!!

For würde z.B. hier scheitern:

Max Mustermann
Sabine Schuster

es würde raus kommen:

Max
Mustermann
Sabine
Schuster

was ja falsch wäre.

Über den Autor Danny Sotzny

Hallo, ich bin Danny Sotzny und bin Software- entwickler und Fotograf. Dabei beschäftige ich mich mit aktuellen Technologien und bekannten Problemen. Schwerpunkte setze ich bei der Webentwicklung (PHP/JS) und der Software- entwicklung mit .NET (C#). Der Blog dient für mich selbst als Gedächtnishilfe für typische und alltägliche Probleme, aber auch persönliche Erlebnisse werden veröffentlicht. Ich betreibe zusätzlich noch Foto-Sotzny.de für meine Fotografien und sotzny.net, was meine Webseite für die Softwareentwicklung ist.

Leave a Reply

See also:

%d Bloggern gefällt das: