J'ai un très gros fichier dans lequel je dois remplacer les caractères \ x01 \ n
par le caractère \ n
. Comment cela se ferait-il avec sed
? Jusqu'à présent, j'ai:
$ sed -i 's/\x01\n/\n' file
caractères supplémentaires à la fin de la commande d
Mais il me manque peut-être quelques caractères d'échappement.
3 Réponses :
Je pense que vous manquez juste le '/'
de fermeture :
$ sed -i 's/\x01\n/\n/' file
N'écrivez pas \ n
dans la ligne orientée sed
:
sed -i 's/\x01$//' file
Je suppose que cela fonctionnerait, mais il est possible qu'il y ait un caractère \ x01
sans saut de ligne que nous ne voulons pas supprimer. C'est une technicité que je suppose et je ne sais pas si elle existe dans le fichier réel, mais c'est la principale raison pour laquelle.
Le $
signifie fin de ligne, donc cette commande supprime uniquement le \ x01
en fin de ligne. Lorsque vous souhaitez supprimer tout '\ x01', ypu peut supprimer le $
et ajouter g
pour global ou utiliser tr
.
oh, je vois compris.
Cela pourrait fonctionner pour vous (GNU sed):
sed -zi 's/\x01\n/\n/g' file
Cela se glisse dans le fichier entier (ou dans les parties délimitées par \ x00
) et remplace \ x01 \ n
par \ n
globalement.