Używanie sed do zamiany znaków specjalnych


14

To działa w celu zastąpienia tomze samw pliku:

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

Ale to nie:

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

Aby zastąpić znaki specjalne *****słowem sam. Próbowałem z cięciem, \*ale błędy.


2
Jakim poleceniem próbujesz \*i jakie masz błędy?
cuonglm

próbowałem: sed 's / **** / sam / g' test.txt> test2.txt i powoduje błąd: sed: bad regex '*****': niepoprawne poprzedzające wyrażenie regularne - to ma blackslash \ przed *
Rosebud

1
Możesz spróbować uciec od każdej specjalnej postaci:sed 's/\*\*\*\*\*/sam/g'
taliezin

Odpowiedzi:


18

Musisz uciec przed znakami specjalnymi ukośnikiem \przed znakiem specjalnym, np .:

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


0

Musisz uciec przed znakami specjalnymi ukośnikiem \przed znakiem specjalnym. W twoim przypadku ucieknij przed każdą postacią specjalną odwrotnym ukośnikiem \.

na przykład: **** boy is ****

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

ans:

sam boy is sam
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.