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:

[cc lang=”bash”]
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”
[/cc]

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 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.
Dieser Beitrag wurde unter Bash, Grundlagen, Linux-Welt, Programmierung, Studium abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

2 Antworten zu Linux Bash: Datei zeilenweise abarbeiten

  1. tuxorius sagt:

    Das Problem bei “for” und Trennzeichen lasst sich mit setzen vom IFS lösen…

    IFS”

    for …

  2. tuxorius sagt:

    Das Problem bei “for” und Trennzeichen lässt sich mit setzen von IFS lösen…

    IFS”

    for …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.