69 votos

¿Cómo eliminar este símbolo "^@" con vim?

Tengo algunos archivos que se corrompen con este símbolo:

^@

No forma parte de la cadena; no se puede buscar. ¿Cómo puedo sustituir este símbolo por nada, o cómo puedo eliminar este símbolo?

A continuación se muestra una línea de ejemplo de un archivo:

^@F^@i^@l^@e^@n^@a^@m^@e^@ ^@ ^@ ^@ ^@ ^@ ^@ ^@ ^@ ^@ ^@:^@ ^@^M^@

63voto

Kyndod7 Puntos 16

Podrías intentarlo:

  • %s/<CTRL-2>//g (en PCs normales)

  • %s/<CTRL-SHIFT-2>//g (en ordenadores Mac)

donde <CTRL-2> significa que primero hay que pulsar la tecla CTRL en PCs regulares, manteniéndolo como presionado, golpea 2 , liberación CTRL .

y <CTRL-SHIFT-2> significa que primero hay que pulsar la tecla control en los ordenadores Mac, manteniéndolo pulsado, pulse shift en los ordenadores Mac, manteniéndolo pulsado, pulse 2 , liberación control y shift .

Por último, ambos comandos deberían dar como resultado %s/^@//g en la pantalla. ^@ significa un solo carácter (un byte NULL, que de otro modo no podría mostrarse), no ^ seguido de @ , por lo que no se puede escribir simplemente ^ y @ en una fila en el comando anterior.

Este comando elimina todos los ^@ .

52voto

IronBlossom Puntos 234

No creo que tus archivos estén corruptos. Tu línea de ejemplo parece contener texto normal con bytes nulos entre cada carácter. Esto sugiere que se trata de un archivo de texto que ha sido codificado en UTF-16 pero que falta la marca de orden de bytes al principio del archivo. Consulte http://en.wikipedia.org/wiki/Byte-order_mark

Supongamos que abro el Bloc de notas, escribo la palabra "nombre de archivo" y lo guardo como Unicode Big-endian. Un volcado hexadecimal de este archivo tiene el siguiente aspecto:

fe ff 00 66 00 69 00 6c 00 65 00 6e 00 61 00 6d 00 65

Si abro este archivo en Vim se ve bien - los bytes 'fe ff' le dicen a Vim cómo está codificado el archivo. Supongamos ahora que creo un archivo que contiene exactamente la misma secuencia de bytes, pero sin el 'fe ff' inicial. Vim inserta ^@ (o <00>, dependiendo de su configuración), en lugar de los bytes nulos; el Bloc de notas inserta espacios.

Así que más que eliminar los nulos, lo que deberías hacer es conseguir que Vim interprete el archivo correctamente. Usted puede obtener Vim para recargar el archivo con la codificación correcta con el comando:

:e ++enc=utf16

41voto

jriggins Puntos 241

Esto me ha funcionado dentro de vim:

:%s/\%x00//g

13voto

Deepak Puntos 51

Ese "símbolo" representa un carácter NULL, con valor ASCII 000.

Es difícil de eliminar con vim, intente

tr -d '\000' < file1 > file2

1voto

colemik Puntos 718

Sí, puedes hacerlo. Se llama colocación. Esencialmente, usted proporciona el servidor y el proveedor de colocación suministra todo lo demás: energía, refrigeración, seguridad y, en algunos casos, proporcionan el ancho de banda.

Basarán el coste en la cantidad de espacio físico que ocupa tu servidor, la cantidad de energía que utiliza, el calor que genera y, si necesitas ancho de banda, la cantidad de ancho de banda que vas a utilizar. Normalmente, si proporcionan ancho de banda, le cobrarán una cantidad fija por un determinado número de direcciones IP y una tasa de información comprometida (CIR). Puedes pagar por una cantidad fija de ancho de banda o puedes pagar en función del uso. Si pagas por un ancho de banda fijo, te darán esa cantidad y nunca podrás usar más. Sin embargo, es bastante común que compres un ancho de banda que se puede reventar. En este caso, te proporcionarán un puerto que puede llegar a 100 Mbps, por ejemplo, y te facturarán en función de tu utilización media. Normalmente, esto se hace utilizando el modelo de facturación del percentil 95 (Google puede explicarlo mejor que yo). Así que pueden cobrarte 50 dólares al mes por cada megabit de ancho de banda del percentil 95, de modo que si tienes una media de 10 Mbps, pagarás 500 dólares por ese mes.

Dicho esto, si sólo tiene un servidor, probablemente sea mucho más sencillo y fácil alquilar un servidor dedicado o utilizar un servidor virtual (VPS). Empresas como Rackspace y Amazon Web Services ofrecen servidores virtuales. En ese modelo usted pagaría por el servidor virtual en función de la cantidad de CPU, RAM y disco que necesite. También pagas por el ancho de banda, pero en este caso pagas en función de la cantidad de datos que transfieres, no de tu utilización media. Por ejemplo, AWS cobra entre 10 y 12 céntimos por cada gigabyte de datos que su servidor envía a Internet.

El uso de un servidor virtual tiene otras ventajas. Ya no tiene que preocuparse por los fallos de hardware, ya que su servidor es una máquina virtual, si el host en el que se está ejecutando tiene un problema de hardware, puede ser fácilmente trasladado a otro host. Además, es fácil actualizar la máquina virtual para que tenga más o menos CPU/RAM/Disco en función de su uso.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: