$ hexdump -cn 32 file.txt
0000000 a d h d \n a d s l \n a m v b \n a
0000010 o v \n a o w \n a r o b \n a s f a
0000020
$ hexdump -cn 32 my-sorted.txt
0000000 a \n a a \n a a a \n a a d \n a a d
0000010 s \n a a f j e \n a a f j e s \n a
0000020
$ hexdump -cn 32 sorted-file.txt
0000000 a \r \n a a \r \n a a a \r \n a a d \r
0000010 \n a a d s \r \n a a f j e \r \n a a
0000020
您的排序文件更大,因为它使用 Windows 行尾\r\n(两个字节)而不是 Linux 行尾\n(一个字节)。
可能是您在 Windows 下使用诸如cygwinWindows 10 之类的工具或这个新的 Linux 子系统运行该命令吗?或者你有没有在 Wine 中运行过一些东西?
虽然您的原始文件有以 结尾的行
\n
,但您的排序文件有\r\n
. 添加\r
是改变大小的原因。为了说明,当我在我的 Linux 系统上运行您的命令时会发生以下情况:
如您所见,排序后的重复数据文件短了几行,因此也少了几个字节。但是,您的文件不同:
这两个文件的行数完全相同,但是:
我从你的链接下载的那个
sorted-file.txt
更大。如果我们现在检查第一行,我们可以看到额外的\r
:我在 Linux 上创建的版本中不存在以下内容:
如果我们现在
\r
从您的文件中删除:我们得到了预期的结果,一个比原始文件更小的文件,就像我在我的系统上创建的一样:
hexdump
揭示它!您的排序文件更大,因为它使用 Windows 行尾
\r\n
(两个字节)而不是 Linux 行尾\n
(一个字节)。可能是您在 Windows 下使用诸如
cygwin
Windows 10 之类的工具或这个新的 Linux 子系统运行该命令吗?或者你有没有在 Wine 中运行过一些东西?