出于某种神秘的原因,我的CSV数据中的某些元素显示为s/stWgvN52??f2& ?"
而不是stWgvN522tw0JtZZnyXj
,这会混淆文件,因为我已将;
设置为CSV分隔符。
我尝试使用sed
替换有缺陷的字符串,如下所示:
$ sed -i 's/stWgvN52??f2& ?"/stWgvN522tw0JtZZnyXj/g' file.csv
但是我收到以下错误: sed:1:" access_logs_2014-04.csv":命令a期望\后跟文本
是什么原因?
答案 0 :(得分:6)
使用-i
选项时,必须指定所做备份文件的扩展名。某些版本的sed
期望扩展名直接附加到-i
选项,因此您编写的内容将起作用。但是其他版本(比如OS X上的版本)要求它是一个单独的选项,所以你必须写:
sed -i '' 's/stWgvN52??f2& ?"/stWgvN522tw0JtZZnyXj/g' file.csv
指定您不需要备份文件。