Utilisation de sed pour remplacer des caractères spéciaux

13

Cela fonctionne pour remplacer tompar samdans un fichier:

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

Mais cela ne signifie pas:

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

Pour remplacer les caractères spéciaux *****par le mot sam. J'ai essayé avec une barre oblique \*mais des erreurs.

Rosebud
la source
2
Avec quelle commande avez-vous essayé \*et quelles erreurs vous avez rencontrées?
cuonglm
j'ai essayé: sed 's / **** / sam / g' test.txt> test2.txt et entraîne une erreur: sed: mauvaise expression régulière '*****': expression régulière précédente non valide - cela a le blackslash \ avant le *
Rosebud
1
Vous pouvez essayer d'échapper à chaque personnage spécial:sed 's/\*\*\*\*\*/sam/g'
taliezin

Réponses:

17

Vous devez échapper les caractères spéciaux avec une barre oblique inverse \devant le caractère spécial, par exemple:

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

Karthik K
la source
0

Vous devez échapper aux caractères spéciaux avec une barre oblique inverse \devant le caractère spécial. Pour votre cas, échappez à chaque caractère spécial avec une barre oblique inverse \.

par exemple: **** boy is ****

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

ans:

sam boy is sam
shareef babu
la source