无法使用linux中的文本编辑器删除前两个编码字符

时间:2014-12-29 11:27:30

标签: linux bash awk sed encode

当我使用文本编辑器查看文件a.csv的内容时,它会显示我:

aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk

但当我cat时,我有:

��aaa   bbb ccc ddd eee fff ggg hhh iii jjj kkk

因此,当我想首先删除字符��时,我不能这样做。例如:

cat a.csv | sed 's/\(.\{2\}\)//'

结果是:

��aa    bbb ccc ddd eee fff ggg hhh iii jjj kkk

2 个答案:

答案 0 :(得分:3)

这看起来像是文字前面的字节顺序标记。

如果这是正确的,您可以通过将文件转换为不使用字节顺序标记的编码(例如纯UTF-8)来解决此问题,并且这两个字符应该消失。

如何更改文件的编码取决于您使用的编辑器,在vim中使用的命令为:set nobomb

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed -r 's/(\o357\o277\o275){2}//g' file

这将删除八进制三\357\277\275的任何双重出现。

N.B。识别八进制值使用sed -n l file并扫描开始\nnn

的值