新しいファイルに入れたい、1 行に並べ替えられていないものがいくつかあるファイルがあります。
これは私が持っているファイルの一部の例です:
X1314448: SaMi|SM_g2554.t1 SaMi|SM_g5072.t1 Des|Des_g3808.t1 Dul|Dul_comp50786_c0_seq1-1 Nig|Nig_comp88811_c0_seq2-1 AB|AB0003DMP400018076_AB0003DMT400026495 Phy|Phy_comp35647_c0_seq1-1 SWtf|SW_g27807.t1 Tom|Solyc02g077050.2.1
X1314810: Des|Des_g33587.t1 Nig|Nig_comp84357_c0_seq1-1 AB|AB0003DMP400020961_AB0003DMT400030857 Phy|Phy_comp33112_c0_seq1-1 SaMi|SM_g27352.t1 SWtf|SW_g21774.t1 TAIR|AT4G14930.1 Tom|Solyc06g054250.2.1 Dul|Dul_comp63657_c0_seq2-1
X1327159: AB|AB0003DMP400016823_AB0003DMT400024599 AB|AB0003DMP400017933_AB0003DMT400026257 Dul|Dul_comp58749_c0_seq2-1
X1330513: Des|Des_g36886.t1 AB|AB0003DMP400049952_AB0003DMT400073802 SWtf|SW_g16502.t1
X132738: Des|Des_g491.t1 Des|Des_g6171.t1 Dul|Dul_comp57659_c0_seq2-1 Dul|Dul_comp57659_c0_seq3-1 Dul|Dul_comp57659_c0_seq4-1 Ni g|Nig_comp93106_c3_seq1-1 Nig|Nig_comp93106_c3_seq2-1 AB|AB0003DMP400005485_AB0003DMT400007895 AB|AB0003DMP400021388_PGS C0003DMT400031553 Phy|Phy_comp61931_c0_seq1-1 Phy|Phy_comp61931_c0_seq2-1 Phy|Phy_comp61931_c0_seq3-1 Phy|Phy_comp61931_c0_seq4-1 RICE|LOC_Os08g43334.1 RICE|LOC_Os08g43334.2 RICE|LOC_Os09g35790.1 RICE|LOC_Os09g35790.2 SaMi|SM_g30888.t1 SaMi|SM_g5888.t1 SWtf|SW _g17547.t1 SWtf|SW_g33717.t1 Des|Des_g47565.t1 SaMi|SM_g6027.t1 SWtf|SW_g42019.t1 TAIR|AT5G62020.1 Tom|Solyc03g026020.2.1 TAIR|AT4 G11660.1
私が望むのは、最初の部分「X1314448:」の後に「Des|Des_g3808.t1」が続くことです。そして、別の「Des_xxx」がある場合 (場合によっては、最後から 2 行目のように複数あります) )、それも含めて、出力ファイルに「AB|AB00…」が続くようにしたいのですが、ソートされていないリストであるため、必要な 3 つの異なる部分をオンのままでソートする方法がわかりません。同じ行 (それらを互いにリンクしたままにする) また、このように 1 行で複数の一致を取得する方法もわかりません。
したがって、最初の行の出力は次のようになります。
X1314448: Des|Des_g3808.t1 AB|AB0003DMP400018076_AB0003DMT400026495
最後から2番目の最後のもの:
X1330513: Des|Des_g36886.t1 AB|AB0003DMP400049952_AB0003DMT400073802
最後の 1 つは次のとおりです。
X132738: Des|Des_g491.t1 Des|Des_g6171.t1 Des|Des_g47565.t1 AB|AB0003DMP400005485_AB0003DMT400007895 AB|AB0003DMP400021388_PGSC0003DMT400031553
主な問題は最後の行だと思います。また、「Dul | ...」も含まれるようにファイルを変更できるようにしたいと考えています。
私はいくつかのことを試しましたが、その方法を使用していくつかの素晴らしいことが行われたのを見たので、最後の行ではパイプとgrepを使用できなくなっているようです。Perl の使用経験はありますが、Perl を使用してこれを解決する方法がわかりません。それを解決するための最良の方法かもしれないawkを使って少し試してみましたが、それを使った実用的な解決策もありません。
これを解決する方法についてのアイデアにとても感謝しています。