Reemplace $ con £ usando el comando cat

Reemplace $ con £ usando el comando cat

Tengo el archivo test_output_archive.svd con algunos signos de dólar ( $). He generado un script de shell Reemplazar_dollar_pound.sh con el comando cat para reemplazar el símbolo del dólar con el £script Libra (). Está funcionando en Solaris 10 y el dólar se reemplaza como se esperaba. En Solaris 11, pero el dólar no se reemplaza, no arroja ningún error

Contenido de test_output_archive.svd: Alquiler de línea $9 OOB solo por $10

Reemplace el símbolo del dólar con la libra en el paso 1, elimine los caracteres basura en el paso 2, elimine el archivo temporal en el paso 3, cambie el nombre en el paso 4**

Contenido de Reemplazar_dollar_pound.sh: gato test_output_archive.svd | tr "\044" "\243" > temp_archive.svd cat temp_archive.svd | tr -d "\302" > test_output_archive2.svd rm temp_archive.svd mv test_output_archive2.svd test_output_archive.svd

¿Se deben realizar modificaciones a medida que el sistema operativo se actualiza a Solaris 11?

Respuesta1

Tiene $un significado especial en las expresiones regulares, significa "el final del registro" (registro==línea en la mayoría de los casos). Entonces, debes escapar de ello. Prueba esto:

sed 's/\$/£/g' file > outfile

Respuesta2

Puede escapar el carácter especial ($) en el comando sed.

$ cat test.txt
£ pound £
$ dollar $
£ pound £
$ dollar $

$ sed 's/\$/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £

O alternativamente

$ sed 's/[$]/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £

Respuesta3

Puede utilizar sedpara reemplazar cada aparición de una cadena como se describeaquí:

sed -i 's/\£/\$/g' FILENAME

La -iopción indica sedoperar en un archivo, ses el operador para reemplazar cadenas, es la cadena que necesita reemplazar, \$es la cadena que reemplaza cada $carácter ( \escapa de los signos ya que son caracteres especiales) y gsignifica reemplazar todas las instancias.

EDITAR:la -iopción no funciona en Solaris, deberías usarestesolución alterna.

información relacionada