mahmood
mahmood

Reputation: 24735

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

Upvotes: 56

Views: 170327

Answers (2)

tom
tom

Reputation: 22979

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

Upvotes: 83

Michael Manoochehri
Michael Manoochehri

Reputation: 7877

So, the concept of a "wildcard" in Regular Expressions works a bit differently. In order to match "any character" you would use "." The "*" modifier means, match any number of times.

Upvotes: 15

Related Questions