Copié esta línea desde /proc/some_proc_id/cmdline
mi máquina ubuntu,
java^@-jar^@/usr/lib/selenium/selenium-server-standalone.jar^@-port^@4444^@-trustAllSSLCertificates^@
De alguna manera, los caracteres del espacio están representados ^@
en vi. Traté de reemplazarlos con caracteres de espacio usando el comando,
:%s#^@# #g
Pero dice, pattern not found ^@
.
¿Cómo se pueden reemplazar los caracteres especiales, particularmente aquellos que comienzan con el símbolo en quilates?
vi
special-characters
Gilles 'SO- deja de ser malvado'
fuente
fuente
TERM
y muchas veces, esscreen
TERM
variable de entorno está configurada correctamente?Respuestas:
No es
vi
eso lo que hizo. Aunque escriba líneas de comando en shells con espacios entre los argumentos, las líneas de comando son en realidad secuencias discretas de cadenas internamente, no una cadena larga separada por espacios. El shell separó la línea de comandos en cadenas de argumentos individuales antes de que se iniciara el comando.En C, las cadenas se terminan con caracteres NUL y se muestran como
^@
.Para escribir esos caracteres, debe prefijarlos con Control- vpara el siguiente carácter literal.
Por ejemplo en este caso: Control- vseguido de Control- @.
El carácter especial que introduce los siguientes caracteres literales es normalmente Control, vpero en realidad es configurable. Escriba
stty -a
para averiguar en qué está configurado. Busquelnext
en la salida.fuente
:%s#^@##g
. Desde que copio, pegado desde la terminal, vi los ha pegado como caracteres originales ...^letter
es solo una notación visual para eso, no hay preocupación real involucrada. Y sí, tienes que escapar del carácter de control, Ctrl-V es cómo lo haces desde el teclado. Eso funciona casi en todas partes. Para su información, la otra respuesta contiene una alternativa, específica devi
la línea de comando, para evitar tener que escribir el carácter de control.^@
y copió y pegó eso, entonces use\^@
para representar esa cadena de dos caracteres en vi. Una gran cantidad de software utiliza la barra invertida para significar "interpretar el siguiente carácter literalmente en lugar de usar su función especial".Ese símbolo representa un carácter NULO, con valor ASCII 000.
Tu podrías intentar:
Alternativa:
En un teclado donde el símbolo @ está encima de la 2tecla (gracias Celada) puedes hacer:
%s/<CTRL-2>/ /g
(en PC)%s/<CTRL-SHIFT-2>/ /g
(en Mac)donde
<CTRL-2>
significa presionar primero la CTRLPC, manteniéndola presionada, presionar 2, soltar CTRL.y
<CTRL-SHIFT-2>
significa primero presionar hacia abajo controlen Mac, manteniéndolo presionado, presionar hacia abajo shiften Mac, mantenerlo presionado, presionar 2, soltar controly shift.Finalmente, los dos comandos deberían aparecer en la
%s/^@/ /g
pantalla.^@
significa un solo carácter, no^
seguido de@
, por lo que no puede simplemente escribir^
y@
en una fila en el comando anterior.Este comando reemplaza todo
^@
con caracteres de espacio.( Fuente )
fuente
@
está encima de la2
tecla.sed 's / \ r //' input> output
ingrese la descripción del enlace aquí
fuente