web-dev-qa-db-fra.com

Qu'est-ce qu'une commande unix pour supprimer les N premiers caractères d'une ligne?

Par exemple, je pourrais vouloir:

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

Je pensais que tr pourrait peut-être le faire, mais je ne suis pas sûr.

196
les2

Utilisez cut. Par exemple. pour effacer les 4 premiers caractères de chaque ligne (c'est-à-dire commencer par le 5e caractère):

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

et vous remplacez 5 par le nombre que vous voulez ... ça devrait faire l'affaire ...

EDIT si pour chaque ligne sed 's/^.\{5\}//g' logfile

44
LB40

Vous pouvez utiliser cut:

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

-c: caractères

file.txt: fichier d'entrée

new_file.txt: fichier de sortie

N-: Les caractères de N à la fin doivent être coupés et exportés dans le nouveau fichier.

Peut également avoir d'autres arguments tels que: 'N', 'N-M', '-M' signifiant nième caractère, nième à douzième caractère, premier à mème caractère respectivement.

Ceci effectuera l'opération sur chaque ligne du fichier d'entrée.

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

supprimerait les 900 premiers caractères

cut utilise 900- pour afficher le 900ème caractère jusqu'à la fin de la ligne

mais quand je conduis tout cela par grep je ne reçois rien

4
les2

Je pense que awk serait le meilleur outil pour cela car il peut à la fois filtrer et exécuter les fonctions de manipulation de chaîne nécessaires sur les lignes filtrées:

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

ou

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

Voici une fonction simple, testée en bash. Le premier paramètre de la fonction est une chaîne, le deuxième paramètre représente le nombre de caractères à supprimer

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

Utilisation: enter image description here

1
To Kra