Usando sed para substituir caracteres especiais


13

Isso funciona para substituir tomcom samem um arquivo:

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

Mas isso não:

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

Para substituir os caracteres especiais *****pela palavra sam. Eu tentei com uma barra, \*mas com erros.


2
Com que comando você tentou \*e quais foram os erros?
cuonglm

Eu tentei: sed 's / **** / sam / g' test.txt> test2.txt e resulta em erro: sed: regex incorreto '*****': Expressão regular anterior inválida - isso tem o blackslash \ antes do *
Rosebud

1
Você pode tentar escapar de todos os caracteres especiais:sed 's/\*\*\*\*\*/sam/g'
taliezin

Respostas:


16

Você precisa escapar dos caracteres especiais com uma barra invertida \na frente do caractere especial, por exemplo:

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


0

Você precisa escapar dos caracteres especiais com uma barra invertida \na frente do caractere especial. No seu caso, escape de todos os caracteres especiais com barra invertida \.

por exemplo: **** boy is ****

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

ans:

sam boy is sam
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.