在 MacOS
上使用 sed
命令时与 linux
上并不相同,一定要主要!
当我们在使用 sed
对文本内容进行替换操作时(比如进行全局替换),一般如下:
sed -i "s#err#right#g" test_sed.txt
★将
”test_sed.txt
文件中的err
全部替换为right
但是在 MacOS
上输出上面的命令,会报错如下:
sed: 1: "test_sed.txt": undefined label 'est_sed.txt'
原因是:在 MacOS
上使用 sed
命令时参数不同
使用方法:要达到与上述命令相同结果,只需像下面这样:
sed -i '' "s#err#right#g" test_sed.txt
★第一个参数为是否需要备份,如果填空不进行备份;一旦填入内容,将生成一个以填入内容为后缀的备份文件。
”
如要生成备份文件,命令如下:
sed -i '.bak' "s#right#err#g" test_sed.txt
会生成一个 test_sed.txt.bak
文件,此文件内容没有更改,test_sed.txt
文件内容中所有的 right
被更改为 err