数字排序但保留重复项
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
命令,您就会明白我的意思。这些在终端应用程序设置中设置,或者您可以自己设置。
许多应用程序的默认语言环境可以是 C
或 POSIX
,基本上就是 ASCII。
所以我这样做了:
LC_ALL=C tr '\r' '\n' < myfile.txt | sort -n
这似乎没问题。
您可能希望添加:
export LC_ALL=C
到您的 .bash_profile
而不是更改您的终端设置。
我正在对一个包含将近九百行的文件进行数字排序。对于其他人,命令
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
命令,您就会明白我的意思。这些在终端应用程序设置中设置,或者您可以自己设置。
许多应用程序的默认语言环境可以是 C
或 POSIX
,基本上就是 ASCII。
所以我这样做了:
LC_ALL=C tr '\r' '\n' < myfile.txt | sort -n
这似乎没问题。
您可能希望添加:
export LC_ALL=C
到您的 .bash_profile
而不是更改您的终端设置。