我用几乎九百行来用数字排序文件。对于其他命令
tr '\r' '\n' < myfile.txt | sort
或
tr '\r' '\n' < myfile.txt | sort -n
似乎可以解决问题,但对我来说,我没有得到我想要的输出(只有两百行)。我可以看到所有重复的数字都丢失在我的Mac上,我得到终端错误“tr:非法字节序列”。
我做错了什么,为什么我不知道如何保存文件?它可以与具有空白列的文件有关吗?
文件在这里: dropbox.com/s/umzx64c5ix90l3y/Proteins.txt?dl=0
EDIT /澄清:
当我以数字方式对所有行进行排序时,我需要以某种方式组合具有相同数字的行,以便将新信息添加到上面的行。比如没有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
如果两条线中都有重叠的信息,我需要保留上一行的信息。
谢谢:)
答案 0 :(得分:0)
您的文件未正确使用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行。
答案 1 :(得分:0)
我在MAC上。我从tr和sed再现了问题illegal byte sequence
。它是在OS X上设置的语言环境,或者我应该说“未设置”。输入locale
命令,您将看到我的意思。这些是在终端应用程序设置中设置的,或者您可以自己完成。
许多应用程序的默认语言环境可以是C
或POSIX
,基本上是ASCII。
所以我这样做了:
LC_ALL=C tr '\r' '\n' < myfile.txt | sort -n
这似乎没问题。
您可能希望添加:
export LC_ALL=C
到.bash_profile
,而不是更改终端设置。