Tengo un archivo con algunos caracteres no imprimibles que aparecen como^C o^B, quiero encontrar y reemplazar esos caracteres, ¿cómo hago para hacerlo?¿Cómo reemplazo o encuentro caracteres no imprimibles en vim regex?
Respuesta
Digamos que desea reemplazar^C con C:
:%s/CtrlVC/C/g
Dónde CtrlVC significa Tipo V entonces C mientras se mantiene presionado Ctrl.
CtrlV permite introducir los caracteres de control.
que puede utilizar:
:%s/^C//g
Para obtener el ^C
mantenga pulsada la tecla de control, pulse V
continuación C
(Ambos mientras presiona la tecla Control) y el ^C
aparecerá. Esto encontrará todas las ocurrencias y las reemplazará con nada.
para eliminar tanto ^C
y ^B
que puede hacer:
:%s/^C\|^B//g
Prueba esto después de guardar el archivo en vim (asumiendo que son en entorno Linux)
:%!tr -cd '[:print:]\n'
por favor expliquen este día mágico de vudú. – Prospero
@JamesAndino: ':%' filtra todas las líneas usando el programa externo ('!') 'Tr', que _remueve_ (' -d') todos los caracteres que son _not_ ('-c') _printable_ (' [: print: ] ') o _newline_ (' \ n'). – quasimodo
Esto no es compatible con Unicode, ya que es una clase de caracteres POSIX (http://en.wikipedia.org/wiki/Regular_expression#Character_classes). Entonces, si tiene YAML con datos como 你好, 'tr' borrará los datos Unicode cuando use' [: print:] '. – ash
excluyendo únicamente los símbolos de control:
:%s/[[:cntrl:]]//g
Eliminación de caracteres no imprimibles (elimina los caracteres no ASCII también):
:%s/[^[:print:]]//g
Al menos hasta vim 7.3 [: imprimir:] solo coincide con caracteres imprimibles en ASCII (editó la respuesta para alertar a los lectores sobre este hecho) – ndemou
@ndemou Esto es complicado, con el [] alrededor de [: imprimir:] el^debería invertir el unir y devolver cualquier no imprimible. ¿O tal vez esa fue tu edición? – dragon788
@ dragon788, sí. Estaba al tanto de cómo funciona cuando escribí mi comentario. Pruebe la segunda expresión regular en texto con caracteres Unicode imprimibles fuera de la tabla ASCII para comprender mi comentario (eliminará los caracteres Unicode). – ndemou
Ninguna de las respuestas aquí utilizando los caracteres de control de Vim trabajó para mí. Tuve que ingresar a un rango Unicode.
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
Ese rango Unicode se encontró en este otro post: https://stackoverflow.com/a/8171868/231914
Como TAB se considera no imprimible, estos [[: cntrl:]] y [^ [: imprimir:]] coinciden con TAB (0x9, C-I) – mosh
- 1. Resaltado y reemplazo de caracteres Unicode no imprimibles en Emacs
- 2. Reemplazo Vim Regex
- 3. Detectar caracteres no imprimibles en JavaScript
- 4. ¿Cómo puedo detectar caracteres no imprimibles en .NET?
- 5. Eliminar caracteres no imprimibles C# multilenguaje
- 6. ¿Cómo puedo reemplazar caracteres Unicode no imprimibles en Java?
- 7. desprendimiento caracteres no imprimibles de una cadena en Python
- 8. Vim regex reemplazar con n caracteres
- 9. ¿Agregar caracteres no imprimibles a una cadena en Java?
- 10. Regex - No contiene ciertos caracteres
- 11. Reemplazo de regex en línea en Perl
- 12. reemplazo regex múltiple en variable en bash?
- 13. ¿Cómo pego caracteres no ASCII en vim?
- 14. Búsqueda interactiva/reemplazar regex en Vim?
- 15. Reemplazo de caracteres en cadenas en VB.NET
- 16. regex para n caracteres o al menos m caracteres
- 17. regex carácter unicode en vim
- 18. Cómo ver los caracteres UTF-8 en VIM o Gvim
- 19. Ruby regex: reemplaza los caracteres no de palabra que no son caracteres espaciales
- 20. Uso del corte con delimitadores no imprimibles
- 21. Regex para todos los caracteres de IMPRESIÓN
- 22. Reemplazo de regex con Emacs
- 23. Reemplazo más rápido para Regex
- 24. preg_replace para eliminar los caracteres no imprimibles parece eliminar todos los caracteres extraños
- 25. Unicode Regex; caracteres no válidos XML
- 26. Vim Case-Agnostic Regex
- 27. Búsqueda y reemplazo de VIM
- 28. Regex: ignorar caracteres adicionales
- 29. JS número de reemplazo de regex
- 30. ¿Cómo encuentro caracteres comunes entre dos cadenas en bash?
También puede utilizar las teclas Ctrl-Q. Esto es útil para algunos usuarios que asignan Ctrl-V a las operaciones del portapapeles –