从bash中的文件中删除撇号

时间:2015-04-28 05:41:54

标签: bash

在文件(menuok.csv)中,我有一行包含撇号。我需要删除它和一些单词。我有其他撇号线,但我不想删除它们。我使用以下代码,但它没有帮助

我需要更改Cloïses,Rap i menta de l'hort-Ripoll 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之间的这种不同编码是否是这个问题的根源?

3 个答案:

答案 0 :(得分:0)

您正在使用-i来更改输入文件。由于使用此选项没有输出,因此您不会向menu.csv

写任何内容

检查menuok.csv,它应该在那里发生了变化。

如果没有,我怀疑正则表达式有问题。它很长,并且包含一些特殊字符。

答案 1 :(得分:0)

这对我有用:

sed -e "s/Cloïses, Rap i menta de l'hort-Ripoll/Ripoll/g" menuok.csv > menu.csv

答案 2 :(得分:0)

  

这是menuok.csv和locale之间的不同编码的来源   这个问题?

你认为是对的。
如果您想继续使用UTF-8语言环境,则必须以不同方式指定模式中的字符ï,e。 G。作为ISO-8859-1代码ef

sed s/"Clo\xefses, Rap i menta de l'hort-Ripoll/Ripoll"/g menuok.csv >menu.csv