Cat命令添加意外行

时间:2019-07-16 10:19:47

标签: unix cat

我使用cat命令来连接两个文件。当我用wc进行行计数时,输出文件中的行数多于输入文件总和。

这是我尝试过的:

cat file1.data file2.data > joined.data

wc的输出是:

382200628    382200628  55947683538 file1.data
13641861     13641861   1953636328  file2.data
399077626    399077626  57901319866 joined.data 
794920115    794920115 115802639732 total

因此,字节数是两个文件的总和,但行数不是。我认为cat可能会将某些内容解释为换行符。但是,如果我在独立文件上运行cat,则没有多余的行:

cat file1.data > file1Cat.data
wc file1.data file1Cat.data
385443054    385443054  55947683538 file1.data
385443054    385443054  55947683538 file1Cat.data
770886108    770886108 111895367076 total

cat file2.data > file2Cat.data
wc file2.data file2Cat.data
13641861   13641861 1953636328 file2.data
13641861   13641861 1953636328 file2Cat.data 
27283722   27283722 3907272656 total              

文件内容是用分号分隔的数字和十六进制字符串。这是示例行:

1559742559; 7899594; 0x2a65Aca4D5fC5B5C859090a6c34d164135398226; 0; 0xb75A82e53BCF5E25cFe15B8a014A2bBc34A468C7; 0; 254905240000000000; 1000000000; 50000; 0; 4331209

有人知道为什么会发生这种情况以及如何预防吗?

编辑: 我将文件分成许多每个1000000行的文件。在拆分文件上运行wc,其中一个文件(split_kj)显示少于1000000行。在此文件中,在某些时候,所有信息都将替换为零字节。以下文件也显示较少的行,但是信息似乎很好。复制它们后,wc输出显示1000000行。对于split_kj,问题仍然存在。这是否表明内存损坏?

...
1000000     1000000   144774157 split_ki
 455140      455141   145081810 split_kj
      0           0   144771155 split_kk
      0           0   145471556 split_kl
      0           0   144974108 split_km
      0           0   145044520 split_kn
      0           0   144890806 split_ko
 775160      775160   145244231 split_kp
1000000     1000000   144993806 split_kq
...

编辑: SSD原来有一些坏扇区。因此,当cat的输出存储在此处时,文件可能会损坏。看来此问题与cat命令无关。

0 个答案:

没有答案