文本和压缩文件中的行数不同

时间:2014-12-23 12:53:22

标签: unix zip wc

我在unix中编写了几个文件,后来发现压缩文件的行数与原始文件的行数不同。

>>wc -l
70308 /location/filename.txt
2931  /location/filename.zip

这怎么可能?

2 个答案:

答案 0 :(得分:1)

zip个文件是二进制文件。 wc命令是针对文本文件的。

zip文本文件的压缩版本可能包含更多或更少数量的换行符,因为zip ping不是每行都行。因此,如果它们都为所有命令提供相同的输出,则无法压缩文件并使文件保持不同的格式。

来自wc手册页:

-l, --lines
    print the newline counts

要获得匹配的输出,您应该尝试

$ unzip -c | wc -l # Decompress on stdout and count the lines

这将给出(大约)3个额外的行(如果没有涉及目录结构)。如果压缩包含文本文件的目录而不是文件,则可能会看到包含文件/目录信息的更多行。

答案 1 :(得分:-1)

在压缩算法中,字/字符被一些二进制序列替换。

让我们假设\ n被0011100取代 和其他一些字符'x'被0001010(\ n)

取代

所以wc程序在zip文件中搜索序列0001010,其数量可能会有所不同。