在一个文件(menuok.csv)中,我有一行包含一个撇号。我需要删除它和一些单词。我还有其他带有撇号的行,但我不想删除它们。我正在使用以下代码,但它没有帮助
我需要改变 Cloïses, Rap i menta de l'hort-Ripoll for Ripoll
sed -i s/"Cloïses, Rap i menta de l'hort-Ripoll/Ripoll"/g menuok.csv > menu.csv
文件 menuok.csv 的编码是 charset=iso-8859-1在语言环境中,如果我检查,我会得到
[enric@localhost ~]$ locale
LANG=en_US.UTF-8
menuok.csv 和 locale 之间的这种不同编码是此问题的根源吗?
您正在使用更改输入文件的-i
。由于使用此选项没有输出,因此您无需写入任何内容menu.csv
检查menuok.csv
,它应该在那里更改。
如果没有,我怀疑正则表达式有问题。它很长,包含一些特殊字符。
我有用:
sed -e "s/Cloïses, Rap i menta de l'hort-Ripoll/Ripoll/g" menuok.csv > menu.csv
menuok 和 locale 之间的这种不同编码.csv 这个问题?
你猜对了。
如果要保留 UTF-8 语言环境,则必须以不同的方式指定模式中的字符ï
,例如作为 ISO-8859-1 代码ef
sed s/"Cloxefses, Rap i menta de l'hort-Ripoll/Ripoll"/g menuok.csv >menu.csv