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.


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.