ファイル全体の文字列間で一致する場合は、相互参照

ファイル全体の文字列間で一致する場合は、相互参照

両方のファイルを相互参照するのに助けが必要です。

ファイル1

Aplastodiscus_albofrenatus_CFBH5051
Aplastodiscus_albosignatus_MZUSPfield1451
Aplastodiscus_arildae_USNM303022
Aplastodiscus_cavicola_MNRJ63689
Aplastodiscus_cochranae_CFBH3001

ファイル2

>12sval16s_Aplastodiscus_albofrenatus_CFBH5051
>12sval16s_Aplastodiscus_albosignatus_MZUSPfield1451
>12sval16s_Aplastodiscus_arildae_USNM303022
>12sval16s_Boana_palaestes_MUBI6795
>12sval16s_Boana_gladiator_MUBI5391

file1の文字列とfile2の最初の "_"の後の文字列が一致する場合にのみ、file2に "">"なしで文字列を追加したい場合は、file1とfile2の文字列をスペースで区切る必要があります。出力は次のようになります。 。

Aplastodiscus_albofrenatus_CFBH5051 12sval16s_Aplastodiscus_albofrenatus_CFBH5051
Aplastodiscus_albosignatus_MZUSPfield1451 12sval16s_Aplastodiscus_albosignatus_MZUSPfield1451
Aplastodiscus_arildae_USNM303022 12sval16s_Aplastodiscus_arildae_USNM303022
Aplastodiscus_cavicola_MNRJ63689
Aplastodiscus_cochranae_CFBH3001

awkが役に立つかどうか疑問に思います。よろしくお願いします。

:)

ベストアンサー1

これを達成するためにGNU sedを使用することができますが、awkソリューションはより読みやすくなります。

sed -rn '/^>/!{G;s:^([^\n]+)\n.*>([^_]+_)\1\.*:\1 \2\1:;P;d};H' FILE2 FILE1 > OUTPUT

入力順序が重要です。 FILE1は以前に保存されたFILE2と一致するかどうかに関係なく印刷されるため、最後に読み取る必要があります。

おすすめ記事