J'ai un fichier journal avec des horodatages. Parfois, il y a plusieurs horodatages sur une seule ligne. Maintenant, je voudrais supprimer tous les horodatages d'une ligne mais garder le premier.
Je peux le faire, s/pattern//2
mais cela ne supprime que la deuxième occurrence et sed
ne permet pas quelque chose comme s/pattern//2-
.
Aucune suggestion?
Réponses:
Avec GNU
sed
:Le
2
spécifie que le deuxième motif et tout le resteg
doivent être supprimés. Donc, cela gardera le premier.la source
Cela devrait fonctionner (remplacez _ par quelque chose d'autre en cas de conflit avec vos journaux):
la source
\n
.ou sans le goto sed:
Les solutions génériques à retirer de la nième position (3 par exemple) sont:
la source
Une légère variation sur la réponse de @ jillagre (modifiée pour la robustesse) pourrait ressembler à:
... mais dans certains cas,
sed
vous devrez peut-être remplacer len
dans le côté droit de la premières///
instruction de substitution par un caractère littéral\n
ewline.la source