在 OSX bash 脚本上使用 sed

Using sed on OSX bash script

我正在尝试用逗号替换 csv 文件中的所有空格。

命令

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

在 OSX 终端中有效,但在以下脚本中无效:

#!/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

终端输出:

./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

有什么想法吗?

使用正常的撇号,即

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

代替右单引号(U+2019)

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