Utilisation de SED pour le remplacement de texte

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.