...und mein (vorerst) letzter
Kann ich eine Datei Zeilenweise auslesen/berabeiten ?
Bisher hab ich Dateien in eine Variable gelesen ( LISTE=`cut /pfad/datei`) und mit 'ner "for" schleife abgearbeitet (for ZEILE in ${LISTE}; do ). Nun hab ich aber Dateien mit 5000 und mehr Zeilen, die ich ungern in eine Variable packen würde und lieber "direkt" abarbeiten würde, also ohne zwischenspeichern der gesamten Datei. Möglich mit "Boardmitteln", also wieder ohne perl, etc ?
Dateien Zeilenweise auslesen
Re: Dateien Zeilenweise auslesen
forschleife $i++ {
cat -n [file] | grep "$i "
}
gibt die Zeile mit der Nummer $i aus
cat -n [file] nummeriert die zeilen der ausgegebenen datei
und grep filtert dann anhand z.B. "10 " raus
musst aber noch ein bissel dran feilen
cat -n [file] | grep "$i "
}
gibt die Zeile mit der Nummer $i aus
cat -n [file] nummeriert die zeilen der ausgegebenen datei
und grep filtert dann anhand z.B. "10 " raus
musst aber noch ein bissel dran feilen
Re: Dateien Zeilenweise auslesen
Die Geschichte mit dem grep funktioniert so leider nicht, da auch Zeilen ausgegeben werden, die die Zeilennummer im Text enthalten.
Alternativ schlage ich folgendes vor:
#! /bin/sh
LINES=`wc -l $1 | tr -s " " | cut -f2 -d' '`
echo "Die Datei $1 hat $LINES Zeilen"
I=1
while [ "$[$I<=$LINES]" = "1" ]
do
ZEILE=`head -n $I $1 | tail -n 1`
# hier wird die Variable mit der Zeile weiterbearbeitet
echo "$I: $ZEILE"
###
I=$[$I+1]
done
Alternativ schlage ich folgendes vor:
#! /bin/sh
LINES=`wc -l $1 | tr -s " " | cut -f2 -d' '`
echo "Die Datei $1 hat $LINES Zeilen"
I=1
while [ "$[$I<=$LINES]" = "1" ]
do
ZEILE=`head -n $I $1 | tail -n 1`
# hier wird die Variable mit der Zeile weiterbearbeitet
echo "$I: $ZEILE"
###
I=$[$I+1]
done
Re: Dateien Zeilenweise auslesen
#/bin/sh
while read ZEILE; do
## irgend etwas damit tun ...
echo "-> $ZEILE"
done </etc/passwd
while read ZEILE; do
## irgend etwas damit tun ...
echo "-> $ZEILE"
done </etc/passwd