Замените $ на £ с помощью команды cat

Замените $ на £ с помощью команды cat

У меня есть файл test_output_archive.svd с некоторыми знаками доллара ( $). Я сгенерировал скрипт оболочки Replace_dollar_pound.sh с командой cat для замены символа доллара на фунт ( £) скрипт работает в Solaris 10, доллар заменяется, как и ожидалось. В Solaris 11, но доллар не заменяется, не выдает никаких ошибок

Содержимое test_output_archive.svd: Аренда линии $9 OOB всего за $10

Заменить символ доллара на фунт на шаге 1, удалить ненужные символы на шаге 2, удалить временный файл на шаге 3, переименовать на шаге 4**

Содержимое Replace_dollar_pound.sh: cat тестовый_архив_вывода.svd | tr "\044" "\243" > временный_архив.svd cat временный_архив.svd | tr -d "\302" > тестовый_архив_вывода2.svd rm временный_архив.svd mv тестовый_архив_вывода2.svd тестовый_архив_вывода.svd

Какие изменения необходимо внести при обновлении ОС до Solaris 11?

решение1

Имеет $особое значение в регулярных выражениях, оно означает "конец записи" (запись==строка в большинстве случаев). Поэтому вам нужно экранировать его. Попробуйте это:

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

решение2

Вы можете экранировать специальный символ ($) в команде sed.

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

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

Или альтернативно

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

решение3

Вы можете использовать sedдля замены каждого вхождения строки, как описаноздесь:

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

Параметр -iуказывает sedна необходимость работы с файлом, s— оператор для замены строк, — строка, которую необходимо заменить, \$— строка, которая заменяет каждый $символ ( \знаки экранируются, так как они являются специальными символами) и gозначает замену всех вхождений.

РЕДАКТИРОВАТЬ:эта -iопция не работает на Solaris, вам следует использоватьэтотобходной путь.

Связанный контент