I am trying to use sed
to change the format of decimal numbers in a large CSV file before importing it into a SQLite database. They all have two decimal places, may be negative use comma as a decimal separator and are therefore escaped with double quotes. I was trying the following:
sed 's/"(-?)([:digit:]+),([:digit:]{2})"/$1$2.$3/g' input.csv > output.csv
The regex seems to work on a text editor on a sample of the file, but when running it through sed
, there are no changes to the original file. What am I doing wrong?
-r
is a requirement. Depending onsed
version[:digit:]
may be a problem as well -[0-9]
works just as well.-r
, i.e. enable extended regex syntax, change[:digit:]
to[[:digit:]]
or[0-9]
.-r
is an illegal option.sed
only changes the original file if you use the "in-place" option-i
. By default, it just prints the edited text to stdout.