I'm trying to get a value such as
"909,999"
With this (the example is replacing it with nothing):
sed 's/["][0-9]+[,][0-9]+["]//g'
But it's not working.
I'm trying to get a value such as
"909,999"
With this (the example is replacing it with nothing):
sed 's/["][0-9]+[,][0-9]+["]//g'
But it's not working.
If you want to replace the pattern, you can use sed -E
or escape the +
characters as suggested by @Kusalananda:
$ printf '"123.456"\n"909,999"\n"100"\n' | sed -E 's/"[0-9]+,[0-9]+"//g'
"123.456"
"100"
or
$ printf '"123.456"\n"909,999"\n"100"\n' | sed 's/"[0-9]\+,[0-9]\+"//g'
"123.456"
"100"
Note that the g
is not needed in this example as there is only one substitution per line.
If you want to delete the matching line(s), you could use d
to delete the pattern space:
$ printf '"123.456"\n"909,999"\n"100"\n' | sed '/"[0-9]\+,[0-9]\+"/d'
"123.456"
"100"
sed
? Does it work if you run withsed -E
(your expression looks like an extended regular expression, unless the pluses are supposed to be literal). Why do you use["]
instead of just"
? The double quote is not special in a regular expression. Likewise for the comma. Also, you are replacing the matched thing with nothing. – Kusalananda♦ Jun 6 at 21:25