剪切后文件大小

剪切后文件大小

我正在尝试验证是否将大文件正确拆分为多个部分。作为一个玩具示例,我有一个文件out_sample

123456789012
123456789012
123456789012
123456789012
123456789012

存储时有 64 个字节。当我使用 cut 将该文件分成六块时,生成的文件每个有 15 个字节:

#!/bin/sh
FILENAME="out_sample"
cut -c1-2 $FILENAME > a
cut -c3-4 $FILENAME > b
cut -c5-6 $FILENAME > c
cut -c7-8 $FILENAME > d
cut -c9-10 $FILENAME > e
cut -c11-12 $FILENAME > f

总共意味着 6*15=90 字节。原始文件大小与新文件大小总和之间的 26 字节相差多少?我注意到cut在文件末尾附加换行符,这可能是每个文件 1 个字节?剩下的呢?

答案1

当您从文件中剪切 2 列时,cut会在每行上添加一个换行符。因此,每个输出文件由 5 行组成,每行有 2 个数字和一个换行符。
这解释了 25 个额外字节(文件 1 到 5;第六个文件仅添加了您通过删除第 13 列(输入文件中的换行符)而丢弃的换行符)。
最后一个字节来自哪里?我假设您使用的编辑器不会在输入文件的最后一行强制换行。

所以什么都没有丢失。

答案2

对于此应用程序,您可能希望使用split而不是cut.split -b 15 $FILENAME应该管用。它会自动进行簿记,而不是让您自己计算文件偏移量。

编辑:误读了问题;该split命令不会按列拆分,就像字节流中的块一样。如果你真的想要按列,OP的方法可能是最好的。

相关内容