Je dois remplacer un motif contenant une chaîne comme ?:
, ?'
, ??
et ?+
dans une ligne de texte.
Si c’est le cas ?:
alors ça devrait être ?'
alors '
, ??
alors ?
et ?+
puis +
.
j’ai essayé
sed -i 's/\?:/:/g'
,
sed -i "s/\?'/'/g"
,
sed -i 's/\??/?/g'
et
sed -i 's/\?+/+/g'
.
Alors que 's/\?:/:/g'
et sed -i "s/\?'/'/g"
fonctionnaient bien mais que je rencontrais des problèmes avec sed -i 's/\??/?/g'
et sed -i 's/\?+/+/g'
.
Le motif n’est pas remplacé correctement.
S’il vous plaît aider. Merci.
En utilisant perl, vous pouvez faire:
perl -api -e "s/\?(?=[:'?+])//g" file.txt
Cela va supprimer tous les points d’interrogation ?
qui est suivi par l’un des :
'
, ?
ou +
Avec sed:
sed -i -r "s/\?([\?:\+'])/\1/g" input_file.txt
Il modifie input_file.txt
à la place ( -i
) et utilise des expressions régulières étendues ( -r
), alors ?
et +
doivent être échappés.
Si le motif est trouvé, il remplace tout le motif par le second caractère.