PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zeilenzahl in textdatei



thenktor
03-12-2001, 21:43
hi
ich fang grad an an shellskripte zu schreiben. ich bräucht jetzt ein programm, das mir die zeilenanzahl einer textdatei ausgibt.

geronet
03-12-2001, 22:12
geh auf's wc...

das programm heisst "wc" -> word count

also

wc -l /etc/hosts

gibt die Anzahl der Zeilen der /etc/hosts

thenktor
05-12-2001, 12:56
danke, aber ich hab da noch ein problem ;)
mit wc -l test.m3u bekomm ich fol. ausgabe:
17 test.m3u
ich brauch aber nur die zahl 17 (als integer variable). wie mach ich das?

thommy
05-12-2001, 13:45
awk 'END {print FNR}' test.m3u

Thomas

thenktor
05-12-2001, 15:46
danke

ich habs so gelöst:
MAXN=`wc -l $1 | cut -c 6-7`

es funktioniert aber ich denke mal das von dir is besser :)

thenktor
05-12-2001, 15:52
kann mir noch irgendwer sagen für was die parameter bei awk stehen? ich kanns mir ja einigermaßen vorstellen aber ich würds gern genauer wissen :)
die ganze man page durchzukauen is mir aber zu viel arbeit (das is ja schon fast a ganzes buch)

thommy
05-12-2001, 16:01
Ein Awk-Programm besteht aus 3 Teilen:

BEGIN {} # wird einmalig VOR Eintritt ins "Hauptprogramm" ausgeführt
{} # quasi das Hauptprogramm, das für jede Eingabezeile ausgeführt wird
END {} # wird einmalig nach dem Hauptprogramm ausgeführt

Da Du die Zeilenanzahl wissen möchtest, aber Dich die Eingabedateien eigentlich nicht interessieren, können sowohl BEGIN als auch das Hauptprogramm entfallen...

Es genügt die Ausgabe der aktuell bearbeiteten Zeilennummer (FNR) am Ende des Skripts (nur da enthält FNR die letzte Nummer).

Etwas trickreich, aber - wie ich schon im parallelen Thread bemerkte - spart ein solcher Aufruf eine zweite Prozesserzeugung.

In ca. 1 Woche ist in der Linuxfibel der Awk-Abschnitt vollständig enthalten...

Thomas

thenktor
05-12-2001, 16:20
danke
das war hilfreich.
mein skript nimmt auch langsam form an ;)

Hans-Georg Normann
05-12-2001, 21:56
Bekanntlich frühren vile Wege nach Rom. Dies sollte auch möglich sein:

set `wc -l $1`
MAXN=$1


Das für diejenigen die awk nicht mögen oder (noch) nicht verstanden haben.

Hans