粘贴命令是否可以正确地将两个 unicode 文件并排放置而不重复任何 unicode BOM?

粘贴命令是否可以正确地将两个 unicode 文件并排放置而不重复任何 unicode BOM?

这是我正在使用的粘贴版本。

C:\cygwin\bin>.\paste.exe --version
paste (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.
This is free software: you are free to change and redis
There is NO WARRANTY, to the extent permitted by law.

Written by David M. Ihnat and David MacKenzie.

C:\cygwin\bin>

我不确定它是否是最新的,因为我没有看到此处列出的粘贴内容,我想我应该在这里进行更新

在此处输入图片描述

但是我在 cygwin 中安装了粘贴命令。

但它不起作用..它插入了额外的字符

xxd -p 是显示十六进制的命令。

file1.txt 和 file2.txt 是两个 UTF-8 文件

C:\cro\a>file file1.txt
file1.txt: UTF-8 Unicode (with BOM) text, with no line terminators

C:\cro\a>file file2.txt
file2.txt: UTF-8 Unicode (with BOM) text, with no line terminators

file1.txt 具有 utf-8 bom 的代码,即 EFBBBF 后跟字母“aaa”的十六进制。file2 包含文本 bbb。

C:\cro\a>xxd -p file1.txt
efbbbf616161

C:\cro\a>xxd -p file2.txt
efbbbf626262

我们在这里看到了。不用担心,´╗┐这只是 cmd 试图显示 UTF-8 BOM。这不是我遇到的问题。

C:\cro\a>type file1.txt
´╗┐aaa
C:\cro\a>
C:\cro\a>type file2.txt
´╗┐bbb
C:\cro\a>

问题是,当我使用粘贴命令尝试将 file1 和 file2 并排放置时,正如您在十六进制中看到的,它重复了 unicode bom(efbbbf),但事实并非如此。

C:\cro\a>paste file1 file2 >a.a
paste: file1: No such file or directory

C:\cro\a>paste file1.txt file2.txt >a.a

C:\cro\a>type a.a
´╗┐aaa  ´╗┐bbb

C:\cro\a>xxd -p a.a
efbbbf61616109efbbbf6262620a

C:\cro\a>

有没有适用于 Windows 的 paste 的更高版本,不会出现这种情况?或者即使在最新的 Linux 版本的 paste 中也存在此问题。有办法解决吗?

同时,在使用粘贴之前,我将对不带 BOM 的 utf-8 文件进行编码。

答案1

过去属于 coreutils。

您可以使用网站上的搜索 https://cygwin.com/cgi-bin2/package-cat.cgi?file=x86_64%2Fcoreutils%2Fcoreutils-8.26-2&grep=bin%2Fpaste

或者cygcheck -p bin/paste

当然,如果您有两个 BOM,它并不关心编码,那么您将会有一个重复。

相关内容