Unix Cat命令添加意外的额外行
我使用cat命令连接两个文件。使用wc进行行计数时,输出文件的行数大于输入文件的行数之和 以下是我尝试过的:Unix Cat命令添加意外的额外行,unix,cat,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
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命令无关。cat不会(假设您不传递任何选项,如“-s”等)解释其输入文件,因此虽然我可以理解数字行中一行的差异(如果最后一行没有换行符,可能会发生),但我无法解释连接文件中额外300万行的差异。请再试一次,以验证您可能没有在错误版本的文件上运行此操作,等等。
cat-vet file1.data file2.data | grep-c'\015'
是否返回非零数字?(只是猜测,祝你好运!)运行你建议的命令cat-vet file1.data file2.data | grep-c'\015'
我得到以下输出:12888300
可能是你的原始文件1。数据不包含你认为它包含的内容。零块可能已经在其中。可能是转换为CSV(如果有)是罪魁祸首。考虑到“编辑”,问题似乎已经解决,没有访问出现问题的机器的任何人都无法解决问题。IMNSHO,这个问题应该关闭并删除。在短期内,无论是在中期还是长期内,它都不会给这样做带来任何好处。