终端中的sed命令出错

时间:2016-07-14 21:07:57

标签: csv sed terminal command syntax-error

我进入终端,我输入了这个命令:

sed 's/X(Y)Z/A/g' filename.csv > newfile.csv

尝试将X(Y)Z替换为。我认为Y周围的括号可能会使事情复杂化。

这是我得到的错误:RE错误:非法字节序列。

请让我知道我能做些什么。

1 个答案:

答案 0 :(得分:0)

我怀疑问题是您的文件filename.csv包含非ASCII(可能是Unicode)字符,而您的sed期望ASCII。

要做的第一件事是检查文件,看看是否是这种情况。我认为你可以这样做:

cat -vet filename.csv

您可能会看到非ASCII的突出显示的字符。或者,您可以使用iconv尝试将其转换为ASCII并查看是否出现错误,因为其中存在非ASCII字符。

如果那里有非ASCII字符(如重音符和非英语字符,有时还有表情符号,撇号和引号),您需要告诉sed它们在那里,或者删除字符。

要查看sed期待的内容,您需要运行locale并将输出粘贴到原始问题中,方法是点击其下方的edit。然后,您可能需要更改您的语言环境,以使sed更喜欢Unicode,就像我在评论中建议的那样。

希望有所帮助!