150 Stimmen

Wie drucke ich die dritte Spalte in die letzte Spalte?

Ich versuche, die ersten beiden Spalten (an denen ich nicht interessiert bin) aus einer DbgView-Protokolldatei zu entfernen. Ich kann anscheinend kein Beispiel finden, das ab Spalte 3 bis zum Ende der Zeile druckt. Beachten Sie, dass jede Zeile eine variable Anzahl von Spalten hat.

3voto

luigi9876 Punkte 76
awk '{print ""}{for(i=3;i<=NF;++i)printf $i" "}'

3voto

Eddie Sullivan Punkte 766

Mit einem regulären Ausdruck lässt sich derselbe Effekt leicht erzielen. Angenommen, das Trennzeichen ist ein Leerzeichen, würde es wie folgt aussehen:

awk '{ sub(/[^ ]+ +[^ ]+ +/, ""); print }'

1 Stimmen

Ich würde Regex vermeiden. Es ist wahrscheinlich langsamer und leichter zu versehentlich durcheinander zu bringen.

1 Stimmen

Er verkürzt sie so: awk '{ sub(/([^ ]+ +){2}/, ""); print }' was das Muster zwei Mal ablöst.

1voto

kenorb Punkte 134883

In Bash können Sie die folgende Syntax mit Positionsparametern verwenden:

while read -a cols; do echo ${cols[@]:2}; done < file.txt

Erfahren Sie mehr: Umgang mit Positionsparametern bei Bash Hackers Wiki

1voto

Massimo Punkte 11
awk '{for (i=4; i<=NF; i++)printf("%c", $i); printf("\n");}'

druckt Datensätze ab dem 4. Feld bis zum letzten Feld in der gleichen Reihenfolge wie in der Originaldatei

0 Stimmen

Tut mir leid, das war nicht ganz die richtige Antwort. Sie ist zu spezifisch, aber ich weiß nicht, wie ich sie löschen kann.

1voto

Ross Punkte 1615

Ich bin ein bisschen spät dran, aber keine der oben genannten Maßnahmen schien zu funktionieren. Versuchen Sie dies, mit printf, fügt Leerzeichen zwischen jedem. Ich wählte t

awk '{for(i=3;i<=NF;++i) printf("%s ",  $i) }'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X