...bis zu einer leeren Zeile

D

davinci80

Mitglied
Hallo!

Wie wird in einem Shell-Skript eine "leere Zeile" definiert
z.Bsp.: lese solange aus der Datei xyz Alles heraus, bis eine leere Zeile in der Datei xyz auftauscht.
Dies würde ich gerne in folgende while-Schleife implementieren:

typeset -i i=1
while (( i <= 11 ))
do
zgrep ${array} $Dateiname
i=i+1
done
echo
echo "Die Logfileanalyse ist beendet. Das Ergebnis finden Sie in der Datei: $Dateiname2.csv"
echo
 
Evl wenn von deiner zeile[0]='\n' so müsste es in C/C++ sein und ich denke mal auch in der sh.
Aber einfacher ist es glaube ich von reni.
 
Hallo

Wenn du eine Datei bs zur ersten leeren Zeile ausgeben willst, gibt es verschiedene Möglichkeiten.
Mit reinen Shellmitteln etwa so:
Code:
$ cat testdatei
10
11
11
12
12
13
13
14
14
15
15
16
16
17
17
18
18
19
19

20
21
21
22
22
23
23
24
24
25
25
$ while read zeile ;do if [ -z "$zeile" ]; then break; else echo $zeile;fi;done<testdatei
10
11
11
12
12
13
13
14
14
15
15
16
16
17
17
18
18
19
19

Das kannst du jetzt an deine Geschichte anpassen.
Offensichtlich verwendest du eine komprimierte Datei, dann müsstest du eben zcat davor hängen.

Gruß Wolfgang

Edit:
Hier noch die sed-Variante, wenn die leere Zeile nicht mit ausgegeben werden soll.
Code:
 zcat deine_gzip_textdadei|sed -ne '/^$/!p;/^$/q'|
while read zeile 
do
#some commands
done
 
Zuletzt bearbeitet:
Die Frage war aber weniger, wie eine leere Zeile erzeugt wird, sondern wie sie erkannt wird.

Gruß Wolfgang
 
hm echo "" gibt für mich einen char * array zurück der nur ein \n beeinhaltet.
also hab ich irgendwie so gedacht:
if zeile = $(echo "")
oder so. obs funst bezweifle ich ;)
 
Da muss ich jetzt auch noch meinen Senf danebenmeiern *lach*

schlaubi:~ tiger$ echo "" | od -c
0000000 \n
0000001
schlaubi:~ tiger$ echo | od -c
0000000 \n
0000001


Alles klar? ...aber ja doch :D
 

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

Shell Skript beschleunigen

Summe von Zahlen in einer Zeilen bilden

HandbrakeCLI Shell Skript

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

Zurück
Oben