Linux 排序命令不包括两个文本文件中的最后 9 行和第 14 行

Linux 排序命令不包括两个文本文件中的最后 9 行和第 14 行

您好,我有一个特殊的问题...当我运行 Linux sort 命令对两个文本文件(每个文件有 3331 行和 4344 行)进行排序时,输出文件中仅包含最上面的 3317 行和 4335 行。以下是我正在运行的命令:

sort -o contactspreservesort.csv contactspreserve.csv
sort -o contactsdeletesort.csv contactsdelete.csv

我也尝试过这个:

sort contactspreserve.csv > contactspreservesort.csv
sort contactsdelete.csv > contactsdeletesort.csv

有什么想法吗?谢谢

答案1

你怎么知道底线缺失了,而最上面的线被保留了呢?仅仅因为文件较短并不意味着最后几行脱落,只是有些地方丢失了。

显示所有 4 个文件的完整 wc,而不仅仅是 wc -l。我们可能会发现所有(或大部分)角色都在那里。也许一些“假”行由于一些 CR 而被连接起来(不应该发生,但整个事情也不应该发生)。

您的排序工作文件去哪里了?也许是/tmp,也许它快满了。

运行排序,然后回显状态。

我可以发布一个 awk 来准确地告诉您哪些行丢失了,这可能有助于解释发生了什么。 (如果文件排序不同,则 Diff 将不起作用 - 您会得到一个巨大的报告。)

也许有些行太长了。我不记得限制了(如果有的话)。我也可以发布 awk 来显示最大行长度。

提出下一个问题。什么操作系统,什么版本,什么机器。例如,SunOS 过去很不稳定,线路很长。

答案2

谢谢大家。我找到了问题的根源。我尝试将 sort 命令的输出通过管道传输到 wc -l,并且两个 csv 文件的行数均已正确报告。经过一番尝试和错误后,我发现问题与我正在使用的 Python 脚本无关。我将脚本末尾使用 sort 命令对文件进行排序的 os.system 调用替换为单独的 bash shell 脚本,现在一切正常。我使用的是与 Ubuntu Linux 子系统捆绑在一起的 Python 3.6.7 和 Bash Shell,作为 Windows 10 的一部分。

相关内容