我有一个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)。有没有办法从文件中删除它但预先编码?
答案 0 :(得分:1)
要从文件的第一行删除BOM,您可以使用类似sed -e '1 s/^.//' file.txt
的内容。
sed
命令有两部分:地址和命令。大多数情况下,您会看到sed
在没有地址的情况下使用(这意味着适用于所有行),但您可以通过使用地址将命令操作限制为仅特定行。
在这种情况下,地址为1
,表示第一行。因此替换仅适用于第一行并且每行都被打印(因为这是默认的sed行为)。
答案 1 :(得分:0)
将文件从Windows传输到Linux时,请应用dos2unix
命令。这将删除BOM表符号,并将线条编辑转换为Unix样式。
dos2unix file.txt