Mein Blog

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.

Die mobile Version verlassen