[bash] Using SED with wildcard

I want to replace a string with wildcard but it doesn't work.

The string looks like "some-string-8"

I wrote

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

but the output is

some-string-08

This question is related to bash sed wildcard

The answer is


The asterisk (*) means "zero or more of the previous item".

If you want to match any single character use

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

If you want to match any string (i.e. any single character zero or more times) use

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

Similar questions with bash tag:

Similar questions with sed tag:

Similar questions with wildcard tag: