Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix Cat命令添加意外的额外行_Unix_Cat - Fatal编程技术网

Unix Cat命令添加意外的额外行

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命令连接两个文件。使用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命令无关。

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,这个问题应该关闭并删除。在短期内,无论是在中期还是长期内,它都不会给这样做带来任何好处。