【发布时间】:2016-06-04 15:31:22
【问题描述】:
如何删除作为文件中其他行的子字符串的行,同时保留包含它们的较长字符串?
我有一个文件,其中包含作为字符串的肽序列 - 每行一个序列字符串。我想保留包含所有序列的字符串并删除所有作为文件中其他行的子字符串的行。
输入:
GSAAQQYW
ATFYGGSDASGT
GSAAQQYWTPANATFYGGSDASGT
GSAAQQYWTPANATF
ATFYGGSDASGT
NYARTTCRRTG
IVPVNYARTTCRRTGGIRFTITGHDYFDN
RFTITGHDYFDN
IVPVNYARTTCRRTG
ARTTCRRTGGIRFTITG
预期输出:
GSAAQQYWTPANATFYGGSDASGT
IVPVNYARTTCRRTGGIRFTITGHDYFDN
输出应该只保留最长的字符串,并删除所有作为最长字符串的子字符串的行。因此,在上面的输入中,第 1、2、4 和 5 行是第 3 行的子字符串,因此输出保留的第 3 行。类似地,第 6、8、9 和 10 行的字符串都是第 7 行的子字符串,因此行7 被保留并写入输出。
【问题讨论】:
-
什么是“更长”? “最长的两个”?
-
啊,你想删除任何作为另一个字符串的子字符串的字符串吗?到目前为止,您尝试过什么?
-
是的,我的意思是两个最长的字符串。
-
抱歉给您带来了困惑。我只是进行了编辑以使其清楚。希望它现在清楚。此外,由于这些是肽序列,我将其转换为 fasta 文件并使用 CD-HIT 程序,该程序将具有 100% 同一性的相似序列聚类并产生输出。稍后,将该 fasta 转换为文本文件以供进一步分析。
标签: string perl awk sed substring