1
votes

Remplacement du texte de sed par des caractères d'échappement

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.


0 commentaires

3 Réponses :


0
votes

Je pense que vous manquez juste le '/' de fermeture :

$ sed -i 's/\x01\n/\n/' file


0 commentaires

1
votes

N'écrivez pas \ n dans la ligne orientée sed:

sed -i 's/\x01$//' file


3 commentaires

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.



0
votes

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.


0 commentaires