Awk, aber nur einen Teil eines Feldes drucken

504
Sean McCarthy

Ich befasse mich nur mit einem Teil eines bestimmten Feldes (Hostname) in einer Protokollzeile und möchte alle eindeutigen Vorkommen dieses Teils drucken. Ich mache momentan so etwas wie:

 zcat $file | awk '$2~/f/ ' | sort | uniq -c | sort -rn 

Das Problem ist, dass Feld 14 wirklich lang ist und eine Menge Dinge enthält

/=/%%/25284687/hostname/auhga/giu/2985729/%/etc... 

Die Hostnamen können variieren, und ich möchte nur die einzelnen Hostnamen drucken, sortieren und zählen usw. Wie kann ich meinen Befehl awk besser strukturieren, um dies zu erreichen? Es ist wichtig, zu beachten, dass alles, was den / hostnamen / -Abschnitt vorangestellt und angehängt hat, unterschiedlich ist.

0
Wird der Hostname immer das fünfte durch Schrägstrich getrennte Feld von 14 $ sein? glenn jackman vor 5 Jahren 1

1 Antwort auf die Frage

0
Kamil Maciorowski

Wenn sich Hostnamen /in der awkAusgabe immer zwischen dem 4. und dem 5. befinden, werden sie durch diesen Vorgang extrahiert:

cut -d / -f 5 

Platzieren Sie es gleich nach Ihrem Original awk.