Використання sed для заміни спеціальних символів


14

Це працює , щоб замінити 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 '*****': Невірний попередній регулярний вираз - у цьому є чорна коса \ перед *
Rosebud

1
Ви можете спробувати уникнути кожного особливого персонажа:sed 's/\*\*\*\*\*/sam/g'
taliezin

Відповіді:


18

Вам потрібно уникнути особливих символів із зворотним нахилом \перед спеціальним символом, наприклад:

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


0

Вам потрібно уникати спеціальних символів із зворотним нахилом \навпроти спеціального символу. У вашому випадку уникайте кожного спеціального символу за допомогою нахилу \.

наприклад: **** boy is ****

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

ans:

sam boy is sam
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.