Substitua $ por £ usando o comando cat

Substitua $ por £ usando o comando cat

Eu tenho o arquivo test_output_archive.svd com alguns cifrões ( $). Eu gerei um script de shell Replace_dollar_pound.sh com o comando cat para substituir o símbolo do dólar pelo script Pound ( £). O script está funcionando no Solaris 10, o dólar sendo substituído conforme o esperado. No Solaris 11, mas o dólar não está sendo reposto, não gerando erros

Conteúdo de test_output_archive.svd: Aluguel de linha $ 9 OOB apenas por $ 10

Substitua o símbolo do dólar por libra na etapa 1, remova caracteres inúteis na etapa 2, remova o arquivo temporário na etapa 3, renomeie na etapa 4 **

Conteúdo de Replace_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

Alguma modificação a ser feita à medida que o sistema operacional é atualizado para Solaris 11 ??

Responder1

O $tem um significado especial em expressões regulares, significa "o fim do registro" (record==line na maioria dos casos). Então, você precisa escapar disso. Experimente isto:

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

Responder2

Você pode escapar do caractere especial ($) no comando sed.

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

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

Ou alternativamente

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

Responder3

Você pode usar sedpara substituir todas as ocorrências de uma string conforme descritoaqui:

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

A -iopção diz sedpara operar em um arquivo, sé o operador para substituir strings, é a string que você precisa substituir, \$é a string que substitui cada $caractere ( \escapa dos sinais porque são caracteres especiais) e gsignifica substituir todas as instâncias.

EDITAR:a -iopção não funciona no Solaris, você deve usaresseGambiarra.

informação relacionada