webentwicklung-frage-antwort-db.com.de

Was ist ein Unix-Befehl zum Löschen der ersten N Zeichen einer Zeile?

Zum Beispiel möchte ich vielleicht:

tail -f logfile | grep org.springframework | <command to remove first N characters>

Ich dachte, dass tr die Fähigkeit haben könnte, dies zu tun, aber ich bin mir nicht sicher.

196
les2

Verwenden Sie cut. Z.B. So entfernen Sie die ersten 4 Zeichen jeder Zeile (d. h. beginnen Sie am 5. Zeichen):

tail -f logfile | grep org.springframework | cut -c 5-
304
iammichael
sed 's/^.\{5\}//' logfile 

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

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

44
LB40

Sie können cut verwenden:

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

-c: Figuren

file.txt: Eingabedatei

new_file.txt: Ausgabedatei

N-: Zeichen von N bis zum Ende werden ausgeschnitten und in die neue Datei ausgegeben.

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

Dadurch wird die Operation für jede Zeile der Eingabedatei ausgeführt.

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

würde die ersten 900 Zeichen entfernen

cut zeigt mit 900- das 900. Zeichen am Zeilenende an

aber wenn ich all das durch grep leite, bekomme ich nichts

4
les2

Ich denke, awk wäre das beste Werkzeug dafür, da es die notwendigen Zeichenkettenmanipulationsfunktionen für gefilterte Zeilen filtern und ausführen kann:

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

oder

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

Hier ist eine einfache Funktion, die in bash getestet wurde. 1. Parameter der Funktion ist String, 2. Parameter ist die Anzahl der zu entfernenden Zeichen

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

Verwendungszweck: enter image description here

1
To Kra