2009-06-09 5 views

Antwort

206

Verwenden Sie . Z.B. die ersten vier Zeichen jeder Zeile strippen (dh am 5. Zeichen beginnen):

tail -f logfile | grep org.springframework | cut -c 5- 
+0

haben Sie eine Ahnung, warum die Pipe nicht funktioniert? Wenn ich im Wesentlichen diesen Befehl ausführe, druckt 'cut' die Ergebnisse nicht nach stdout ... wenn ich nur 'tail -f logfile | cut -c 5- 'Ich kann die Ergebnisse sehen ... das Problem muss mit grep sein ich benutze cygwin FYI danke – les2

+0

was passiert, wenn Sie nicht die letzte Pipe hinzufügen und schneiden? im Grunde, wenn Sie den letzten Teil der Linie entfernen? – LB40

+0

it „Schwanz“ die Logdatei, mit grep Filterung (dh sind alle Zeilen mit „org.springframework“ in ihnen stdout gedruckt) wenn ich das Rohr hinzufügen ‚Schnitt‘ auf ... es hängt Wie auch immer, wenn ich 'grep' eliminiere, funktioniert der 'cut' richtig ... ich denke, etwas stimmt nicht damit, wie ich Grep benutze ... könnte auch eine Cygwin-Sache sein – les2

2
tail -f logfile | grep org.springframework | cut -c 900- 

würde entfernen Sie die ersten 900 Zeichen

cut 900- das 900. Zeichen bis zum Ende der Zeile

jedoch, wenn ich Rohr all dies durch grep ich nicht bekommen, um zu zeigen, verwendet alles

+4

"cut -c 1-900" "entfernen Sie die ersten 900 Zeichen" nicht - - Es werden nur die ersten 900 Zeichen übrig bleiben.Wenn Sie die ersten 900 Zeichen entfernen möchten, verwenden Sie "cut -c 901-" – iammichael

+0

auch die ersten 900 Zeichen pro Zeile, pro @ iammichaels Antwort –

30
sed 's/^.\{5\}//' logfile 

und Sie ersetzen 5 durch die Nummer, die Sie wollen ... sollte es den Trick ...

EDIT wenn für jede Zeile sed 's/^.\{5\}//g' logfile

+0

sollte dies eher' sed 's/^. \ {, 5 \} //' logfile ' – user3719454

12

können Sie cut verwenden:

cut -c N- file.txt > new_file.txt 

-c: Zeichen

file.txt: Eingabedatei

new_file.txt: Ausgabedatei

N-: Characters aus N in die neue Datei abgeschnitten und ausgegeben zu Ende sein.

Kann auch andere Argumente haben wie: 'N', 'N-M', '-M' bedeutet n-tes Zeichen, n-tes Zeichen, erstes bis m-tes Zeichen.

Dies führt den Vorgang für jede Zeile der Eingabedatei aus.

+4

Unbrauchbare Verwendung von 'cat',' cut file.txt -cN-> new_file.txt' wird genauso gut funktionieren – ChrisWue

1

Ich denke awk das beste Werkzeug dafür sein würde, wie es beiden Filter kann und führen Sie die notwendigen Funktionen String-Manipulation auf gefilterten Zeilen:

tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}' 

oder

tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)' 
0

Hier ist einfache Funktion, in bash getestet. 1. param der Funktion ist string, 2. param ist die Anzahl der Zeichen

function stringStripNCharsFromStart { echo ${1:$2:${#1}} }

Nutzungs abisoliert werden: enter image description here

Verwandte Themen