perl重新排序tsv文件中的行

时间:2015-07-13 14:36:40

标签: perl sorting tsv

我希望有人能帮助我解决以下问题。我有一个包含300000多行数据的tsv文件,我想重新排序。以下简短摘录:

df.write.csv('mycsv.csv')

我想按以下方式重新排序数据。

src    dest    relationship
CK200    CK201    CK200-CK201
KY305    KY306    KY305-KY306
LM102    LM103    LM102-LM103
KY306    KY305    KY306-KY305
CK201    CK200    CK201-CK200
LM103    LM102    LM103-102

最好的方法是将它存储在散列中并使用'dest'值作为键来使用某种排序吗?

任何帮助将不胜感激!因为从效率的角度来看,我不确定这样做的最好方法。

谢谢, 肖

1 个答案:

答案 0 :(得分:1)

# Original data
cat foo.tsv

src    dest    relationship
CK200    CK201    CK200-CK201
KY305    KY306    KY305-KY306
LM102    LM103    LM102-LM103
KY306    KY305    KY306-KY305
CK201    CK200    CK201-CK200
LM103    LM102    LM103-102

# Store the header info
head -n 1 foo.tsv > foo_sorted.tsv

# Sort the remainder, starting at line 2, and append to foo_sorted.tsv
tail -n +2 foo.tsv | sort >> foo_sorted.tsv

# Show the result
cat foo_sorted.tsv

src    dest    relationship
CK200    CK201    CK200-CK201
CK201    CK200    CK201-CK200  
KY305    KY306    KY305-KY306
KY306    KY305    KY306-KY305
LM102    LM103    LM102-LM103
LM103    LM102    LM103-102