数字排序但保留重复项

numerical sorting but keeping duplicates

我正在对一个包含将近九百行的文件进行数字排序。对于其他人,命令

tr '\r' '\n' < myfile.txt | sort

tr '\r' '\n' < myfile.txt | sort -n

似乎可以解决问题,但对我来说,我没有得到我想要的输出(只有 200 行)。我可以看到我的 mac 上所有重复的数字都丢失了,我收到终端错误 "tr: illegal byte sequence".

我做错了什么,为什么我不知道如何保存文件?它与具有空白列的文件有关吗?

文件在这里: 保管箱.com/s/umzx64c5ix90l3y/Proteins.txt?dl=0

EDIT/CLARIFICATION:

当我按数字对所有行进行排序后,我需要以某种方式组合具有相同编号的行,以便将新信息添加到上面的行。以没有 61 的行为例:

Col   1     2      3     4       5       6         7         8      9   10    11
     61 PTS...  cyt   1bl..   0,38  MONOMER homo-trimer FRUC... PER...Bac..
     61 PTS...                                                                 3

变成:

Col   1     2      3     4       5       6         7         8      9   10    11
     61 PTS...  cyt   1bl..   0,38  MONOMER homo-trimer FRUC... PER...Bac..   3

如果两行信息重叠,我需要保留上一行的信息。

谢谢:)

您的文件未正确使用 UTF-8 编码,而您的语言环境很可能已设置为 UTF-8。第 195 行包含(无效序列用 <HEX> 标记):

1945    comM    protection against fracitins/bacteriocins (found by comparison to spr genome according to H<CE>varstein 2006)   integral membrane protein (H<CE>varstein)   no model

弄清楚编码是什么,然后将文件转换为正确的编码或更改区域设置以适应。简单尝试

env LC_ALL=C tr '\r' '\n' < Proteins.txt | sort -n

似乎对我有用,给出 1021 行。

我在 MAC。我从 tr 和 sed 重现了问题 illegal byte sequence。它是在 OS X 上设置的语言环境,或者我应该说 "not set"。输入 locale 命令,您就会明白我的意思。这些在终端应用程序设置中设置,或者您可以自己设置。

许多应用程序的默认语言环境可以是 CPOSIX,基本上就是 ASCII。

所以我这样做了:

LC_ALL=C tr '\r' '\n' < myfile.txt | sort -n 

这似乎没问题。

您可能希望添加:

export LC_ALL=C

到您的 .bash_profile 而不是更改您的终端设置。