ubuntuusers.de

awk -f ' ' '{print " alles ab $5 ausgeben"}'

Status: Gelöst | Ubuntu-Version: Ubuntu 10.10 (Maverick Meerkat)
Antworten |

thorsten1896

Anmeldungsdatum:
5. November 2006

Beiträge: 67

Hi, wie kann ich bei awk alles ab einem bestimmten aprameter ausgeben?

z.B.:

1
echo " 1 2 3 4 5 6 7 8 9 0 11 ... 128"| awk -f ' '  '{print "  alles ab $5 ausgeben"}' 

ich will die Daten AB $5 sortieren und ausgeben, nur nicht alle 128 Parameter angeben... danke!

svenXY

Avatar von svenXY

Anmeldungsdatum:
22. September 2008

Beiträge: 542

Wohnort: Heidelberg

echo " 1 2 3 4 5 6 7 8 9 0 11 ... 128" | awk -F ' '  '{print substr($0, index($0,$5)) }'

ergibt

5 6 7 8 9 0 11 ... 128

war es das?

Das geht auch einfacher mit cut:

echo " 1 2 3 4 5 6 7 8 9 0 11 ... 128" | cut -d' ' -f6-

thorsten1896

(Themenstarter)

Anmeldungsdatum:
5. November 2006

Beiträge: 67

danke... substring in einer print funktion!

da muss man erst mal drauf kommen ☺ danke!

svenXY

Avatar von svenXY

Anmeldungsdatum:
22. September 2008

Beiträge: 542

Wohnort: Heidelberg

thorsten1896 schrieb:

da muss man erst mal drauf kommen ☺

nö, googeln reicht völlig 😉

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Die Methode mit dem Index ist aber nicht sauber.
Bei diesem Beispiel siehst Du was ich meine:

echo " 1 55 3 4 5 6 7 8 9 0 11 ... 128" | awk -F ' '  '{print substr($0, index($0,$5)) }'

Du solltest unbedingt sauber über die Komponenten iterieren. Nimm eine dieser beiden Möglichkeiten:

echo " 1 55 3 4 5 6 7 8 9 0 11 ... 128" | awk '{$1="";$2="";$3="";$4=""; print $0}'
echo " 1 55 3 4 5 6 7 8 9 0 11 ... 128" | awk '{for(i=5;i<NF;i++) printf $i " ";print $NF}'

(Ver.1 druckt noch ein paar Leerzeichen zu viel, bei Ver.2 muss es in jeder Zeile mehr als 5 Datenelemente geben)

LG,

track

Antworten |