bash - 用sed替换字符串

bio*_*ard 1 csv bash sed

出于某种神秘的原因,我的CSV数据中的某些元素显示为s/stWgvN52??f2& ?"代替stWgvN522tw0JtZZnyXj,因为我将其;设置为CSV分隔符,因此会混淆文件.

我尝试使用sed以下方法替换有缺陷的字符串:

$ sed -i 's/stWgvN52??f2& ?"/stWgvN522tw0JtZZnyXj/g' file.csv
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:sed:1:"access_logs_2014-04.csv":命令a期望\后跟文本

是什么原因?

Bar*_*mar 6

使用该-i选项时,必须指定要生成的备份文件的扩展名.某些版本sed期望扩展名直接附加到-i选项中,因此您编写的内容将起作用.但是其他版本(比如OS X上的版本)要求它是一个单独的选项,所以你必须写:

sed -i '' 's/stWgvN52??f2& ?"/stWgvN522tw0JtZZnyXj/g' file.csv
Run Code Online (Sandbox Code Playgroud)

指定您不需要备份文件.