PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : awk von spalte bis spalte



shb
17-12-2004, 14:11
hi ich möchte mit awk eine komplette zeile ausgeben, aber erst ab z.b spalte 3, leider ist die menge der restlichen spalten immer unterschiedlich ;(
welche möglichkeiten gibts dafür?

thx cu SHB

fs111
17-12-2004, 17:34
Poste mal ein paar Testdaten, möglich ist das mit Sicherheit.

fs111

peschmae
17-12-2004, 20:19
Sowas?



peschmae@thinkpad:/tmp$ cat test.txt
1 2 3 4
a b c d
peschmae@thinkpad:/tmp$ awk ' { for (i = 2; i <= NF; i++) print $i }' < test.txt
2
3
4
b
c
d


NF steht für Number of Fields, also die Anzahl Felder im aktuellen Datensatz.

MfG Peschmä

Hans-Georg Normann
17-12-2004, 22:48
man awk sagt
The variable NF is set to the total number of fields in the input record. Damit müßte man doch was anfangen können, oder?
for (i=4; i<=NF; i++) { ..........} Nicht die eleganteste Methode, geht aber.

Mal ne Frage an die Community, gibts in awk nicht soetwas wie shift in der Shell / Bash? Das wäre ja dann auch ne Möglichkeit.

Hans

shb
19-12-2004, 20:20
mmm, danke genau sowas habe ich gesucht habe ich hattes irgendwie immer mit $NF gemacht.

gibt es eine möglichkeit das ganze auch zeilenweise wieder auszugeben? was in einer zeile ist, soll auch in einer zeile bleiben

thx cu SHB

peschmae
19-12-2004, 21:59
Klar geht das. Guck mal in die Manpage (der Tipp von HGN war gar nicht so schlecht, ich hätte nie gedacht dass in einer Manpage so viel drinstehen kann)



print Prints the current record. The output record is
terminated with the value of the ORS variable.


also ORS (output record separator) passend setzen. Oder printf verwenden.

Den GNU AWK Users Guide gibts auch Online (wusste gar nicht dass es sowas gibt, aber praktisch als Referenz seit Sed&Awk nicht mehr online zu finden ist (ich hab das Buch schon auch in papier aber nicht hier))
http://www.delorie.com/gnu/docs/gawk/gawk_toc.html

@HGN: Ich glaub nicht dass es was schlaueres gibt. Bin zwar nicht _der_ AWK Guru und fände es naheliegend wenn es sowas gäbe, hab aber wirklich noch nie was von sowas gehört.

MfG Peschmä