web-dev-qa-db-fra.com

Utilisation de SED avec caractère générique

Je veux remplacer une chaîne par un caractère générique mais cela ne fonctionne pas.

La chaîne ressemble à "some-string-8"

J'ai écrit

sed -i 's/string-*/string-0/g' file.txt

mais la sortie est

some-string-08
24
mahmood

L'astérisque (*) signifie "zéro ou plus de l'élément précédent".

Si vous souhaitez faire correspondre n'importe quel caractère

sed -i 's/string-./string-0/g' file.txt

Si vous voulez faire correspondre n'importe quelle chaîne (c'est-à-dire n'importe quel caractère zéro ou plusieurs fois), utilisez

sed -i 's/string-.*/string-0/g' file.txt
36
tom

Ainsi, le concept de "caractère générique" dans les expressions régulières fonctionne un peu différemment. Pour faire correspondre "n'importe quel caractère", vous utiliseriez "." Le modificateur "*" signifie, correspond à n'importe quel nombre de fois.

5
Michael Manoochehri