我有一个使用UTF-8(无BOM)编码的文件。文件正在Windows站点上创建,并通过SFTP传输到Linux服务器。使用cat -e它,我得到这样的东西:
cat -e file.txt
M-oM-;M-?test13;hbana0Kw;$
lala;LjgX$
Run Code Online (Sandbox Code Playgroud)
现在,我知道这M-oM-;M-?代表UTF-8(无BOM)。有没有一种方法可以将其从文件中删除,但不预先编码?
要从文件的第一行删除 BOM,您可以使用类似以下内容sed -e '1 s/^.//' file.txt。
sed命令有两部分:地址和命令。大多数时候,您看到sed的命令不带地址(这意味着适用于所有行),但您可以通过使用地址将命令操作限制为仅特定行。
在这种情况下,地址1意味着第一行。因此,替换仅适用于第一行,并且每行都会被打印(因为这是默认的 sed 行为)。
将文件从 Windows 传输到 Linux 时,应用dos2unix命令。这会删除 BOM 符号并将行编辑转换为 Unix 样式。
dos2unix file.txt
Run Code Online (Sandbox Code Playgroud)