94 votes

Supprimer les cinq premiers caractères sur n'importe quelle ligne d'un fichier texte dans Linux avec sed

J'ai besoin d'une ligne de commande pour supprimer les cinq premiers caractères de chaque ligne d'un fichier texte. Comment puis-je le faire avec sed ?

0 votes

181voto

Greg Hewgill Points 356191

Utilisez cut:

cut -c6-

Cela imprime chaque ligne de l'entrée en commençant par la colonne 6 (la première colonne est 1).

2 votes

Ici, cut a de meilleures performances que sed, mais j'ai rencontré des problèmes lorsqu'il est utilisé sur des caractères encodés en utf-8.

3 votes

Juste pour préciser le commentaire de @PSchwede, GNU cut traite tous les caractères comme des octets même lorsque vous utilisez l'option -c. GNU cut ne prend pas en charge les caractères multioctets et ne prendra probablement pas en charge les caractères multioctets dans un avenir prévisible.

90voto

Phil Points 1780
sed 's/^.....//'

signifie

remplace ("s", substitute) le début de la ligne puis 5 caractères (".") par rien.

Il existe des manières plus compactes ou flexibles d'écrire ceci en utilisant sed ou cut.

0 votes

Comment feriez-vous cela pour le dernier caractère d'une chaîne de caractères ?

3 votes

@blarg essayez sed 's/.$//'

0 votes

Plus 1 pour répondre à la partie 'avec sed' de la question et ensuite mentionner que cut est meilleur

16voto

sed 's/^.\{,5\}//' fichier.dat

4 votes

BSD sed n'accepte pas la limite au plus ({,5}), c'est spécifique à GNU. Une expression qui fonctionne sur les deux serait sed 's/^.\{5\}//' file.dat

13voto

ghostdog74 Points 86060
awk '{print substr($0,6)}' file

0voto

Gopi Points 1

sed 's/^.\{,5\}//' file.dat a bien fonctionné pour moi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X