Entonces, la pregunta real es: ¿alguien tiene una idea de cómo eliminar M-BM-
caracteres especiales sin correr el riesgo de perder otros caracteres?
Tengo una cadena de texto:
" . . ."
es decir
space dot space dot space dot
Estoy tratando de reemplazar toda la aparición de esta cadena en el archivo de texto para
"..."
es decir
dot dot dot
Estaba tratando de hacer con sed:
sed -r 's:\s\.\s\.\s\.:...:g' -i sed-dots
Desafortunadamente, no cambia el archivo de entrada ni un poco. Archivo: https://www.dropbox.com/s/46zmiruy3ln85a1/sed-dots
Cuando trato de reemplazar la misma cadena en el editor de texto (uso geany), se encuentra y se reemplaza correctamente.
La única razón por la que puedo pensar es que algunos (o todos) de esos espacios no son realmente espacios, sino algún carácter especial.
¿Alguien tiene idea de cómo encontrar y reemplazar esa cadena con sed (o cualquier otra herramienta de línea de comando)? Por favor, pruebe su idea en mi archivo, ya que el problema no es tan obvio como parece, por eso le pregunté al respecto.
Después de usar cat -A
myfile, parece problemático que esos espacios no sean espacios, sino M-BM-
caracteres especiales. El uso de cualquier símbolo .
sugerido para la búsqueda no es una buena idea ya que existe el riesgo de que se eliminen otros caracteres.
fuente
echo
lugar de capturar un archivo, al menos cuando captura un archivo, sabe que el shell no está interpretando nada, y tampoco lo es echo.cat
, solosed
cargue el archivo (según el ejemplo del OP) pero no guarde en línea (eliminar-i
, para que pueda ver y probar en contra de la salida).cat -A sed-dots
, puedes ver que los "espacios" entre los puntos sonM-BM-
caracteres especiales ... No estoy seguro de cómo se arrastraron allí, pero necesitan ser reemplazados. Si no puedes apuntarles bien, esto funciona:sed -r 's/(\s\..\..\.)/ dot dot dot/ig' sed-dots
Pruebe lo siguiente para reemplazar todos los "." A "."
Pero para ". . ." a "..."
fuente
Podría usar su archivo cuando lo revisé:
Esto funcionó sin un paso de conversión:
fuente