删除文件编码标记但保留其编码

时间:2014-11-24 12:16:32

标签: linux shell utf-8

我有一个UTF-8(无BOM)编码的文件。正在Windows站点上创建文件,并通过SFTP将其传输到Linux服务器。在其上使用cat -e,我会得到类似的结果:

cat -e file.txt

M-oM-;M-?test13;hbana0Kw;$
lala;LjgX$

现在,我知道M-oM-;M-?代表UTF-8(没有BOM)。有没有办法从文件中删除它但预先编码?

2 个答案:

答案 0 :(得分:1)

要从文件的第一行删除BOM,您可以使用类似sed -e '1 s/^.//' file.txt的内容。

sed命令有两部分:地址和命令。大多数情况下,您会看到sed在没有地址的情况下使用(这意味着适用于所有行),但您可以通过使用地址将命令操作限制为仅特定行。

在这种情况下,地址为1,表示第一行。因此替换仅适用于第一行并且每行都被打印(因为这是默认的sed行为)。

答案 1 :(得分:0)

将文件从Windows传输到Linux时,请应用dos2unix命令。这将删除BOM表符号,并将线条编辑转换为Unix样式。

dos2unix file.txt