Search code examples
bashmacossedquoting

Using sed on OSX bash script


I am trying to replace all spaces in a csv file by commas.

The command

sed -i .bac ’s/\ /\,/g’ test.csv

does work in the OSX terminal, but not in the follwing script:

#!/usr/bin/env zsh
sed -i .bac ’s/\ /\,/g’ test.csv
sed ’s/\;//’ test.csv
i=0
while ((i<10))
do
((i=i+1))
sed -i .bac ’s/,,/,/g’ test.csv
done
rm *.bac

Terminal output:

./getEnergyLevels.sh
sed: 1: "’s/ /,/g’": invalid command code ? 
sed: 1: "’s/;//’": invalid command code ?
sed: 1: "’s/,,/,/g’": invalid command code ? 
sed: 1: "’s/,,/,/g’": invalid command code ? 
sed: 1: "’s/,,/,/g’": invalid command code ?
sed: 1: "’s/,,/,/g’": invalid command code ?
sed: 1: "’s/,,/,/g’": invalid command code ?
sed: 1: "’s/,,/,/g’": invalid command code ?
sed: 1: "’s/,,/,/g’": invalid command code ?
sed: 1: "’s/,,/,/g’": invalid command code ?
sed: 1: "’s/,,/,/g’": invalid command code ?
sed: 1: "’s/,,/,/g’": invalid command code ? 
./getEnergyLevels.sh:10: no matches found: *.bac

Any Ideas?


Solution

  • use normal apostrophes, i.e.,

    sed -i .bac 's/\ /\,/g' test.csv
    

    instead of the right single quotation mark (U+2019)

    sed -i .bac ’s/\ /\,/g’ test.csv