Coder Perfect

In sed, why doesn’t ‘d’ work in regular expressions? [duplicate]

Problem

I’m attempting to use d in sed regex, but it’s not working:

sed -re 's/\d+//g'

However, this is working:

sed -re 's/[0-9]+//g'

Asked by user2036880

Solution #1

d is not a regular expression macro; it is a switch. Try running this code instead of the [0-9] expression if you want to utilize a predetermined “constant.”

s/[[:digit:]]+//g

Answered by Kamil

Solution #2

In sed, there is no such thing as a specific character group. You’ll have to utilize the numbers [0-9].

d in GNU sed adds a one-to-three-digit decimal character code in the range 0-255. As stated in the previous comment.

Answered by Ivaylo Strandjev

Solution #3

By passing -E to sed, you can utilize the Extended pattern. d and a few others will not be found in basic RegExp -E Regular expressions should be interpreted as extended (modern) regular expressions, not as basic regular expressions (BRE’s). Both formats are thoroughly described on the re format(7) manual page.

Answered by Fan Yer

Post is based on https://stackoverflow.com/questions/14671293/why-doesnt-d-work-in-regular-expressions-in-sed