Использование sed для замены специальных символов

13

Это работает , чтобы заменить tomс samв файле:

sed 's/tom/sam/g' file_1 > file_2

Но это не так:

sed 's/*****/sam/g' file_1 > file_2

Заменить специальные символы *****словом sam. Я пробовал с косой чертой, \*но ошибки.

дебютантка
источник
2
С какой командой вы пробовали \*и какие ошибки вы получили?
cuonglm
я пробовал: sed 's / **** / sam / g' test.txt> test2.txt и приводит к ошибке: sed: bad regex '*****': неверное предыдущее регулярное выражение - это действительно имеет blackslash \ before *
бутон розы
1
Вы можете попытаться избежать каждого специального символа:sed 's/\*\*\*\*\*/sam/g'
taliezin

Ответы:

17

Вы должны экранировать специальные символы с обратной косой чертой \перед специальным символом, например:

sed 's/\*/t/g' test.txt > test2.txt

Картик К
источник
0

Вам необходимо экранировать специальные символы с обратной косой чертой \перед специальным символом. В вашем случае избегайте использования каждого специального символа с обратной косой чертой \.

например: **** boy is ****

sed 's/\*\*\*\*/sam/g' filename

ANS:

sam boy is sam
Шариф Бабу
источник