La vraie question est donc: est-ce que quelqu'un a une idée de comment supprimer M-BM-
un caractère spécial sans risquer de perdre d'autres caractères?
J'ai une chaîne de texte:
" . . ."
C'est
space dot space dot space dot
J'essaie de remplacer toute occurrence de cette chaîne dans un fichier texte pour
"..."
C'est
dot dot dot
J'essayais de faire avec sed:
sed -r 's:\s\.\s\.\s\.:...:g' -i sed-dots
Malheureusement, cela ne change même pas un peu le fichier d'entrée. Fichier: https://www.dropbox.com/s/46zmiruy3ln85a1/sed-dots
Lorsque j'essaie de remplacer la même chaîne dans l'éditeur de texte (j'utilise geany), elle est trouvée et remplacée correctement.
La seule raison pour laquelle je peux penser est que certains (ou tous) de ces espaces ne sont pas vraiment des espaces, mais un caractère spécial.
Quelqu'un at-il une idée de comment trouver et remplacer cette chaîne par sed (ou tout autre outil en ligne de commande)? Veuillez tester votre idée sur mon fichier, car le problème n'est pas aussi évident qu'il y paraît - c'est pourquoi j'ai posé la question.
Après avoir utilisé cat -A
mon fichier, il semble problématique que ces espaces ne soient pas des espaces, mais M-BM-
des caractères spéciaux. L'utilisation d'un symbole .
suggéré pour la recherche n'est pas une bonne idée car il existe un risque que d'autres caractères soient supprimés.
la source
echo
au lieu de copier un fichier, au moins lorsque vous cat un fichier, vous savez que le shell n'interprète rien, et l'écho non plus.cat
- il suffit desed
charger le fichier (selon l'exemple de l'OP) mais de ne pas l'enregistrer en ligne (supprimer-i
, afin que vous puissiez voir et tester par rapport à la sortie).cat -A sed-dots
vous pouvez voir que les "espaces" entre les points sont desM-BM-
caractères spéciaux ... Je ne sais pas comment ils se sont glissés là-dedans mais ils doivent être remplacés. Si vous ne pouvez pas bien les cibler, cela fonctionne:sed -r 's/(\s\..\..\.)/ dot dot dot/ig' sed-dots
Essayez ce qui suit pour remplacer tous les "." Par "."
Mais pour ". . ." à "..."
la source
Je pourrais utiliser votre fichier lorsque je l'ai parcouru:
Cela a fonctionné sans étape de conversion:
la source