파일 전체의 문자열 간에 일치하는 경우 상호 참조

파일 전체의 문자열 간에 일치하는 경우 상호 참조

두 파일을 상호 참조하는 데 도움이 필요합니다.

파일 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와 일치하는지 여부에 관계없이 인쇄되므로 마지막으로 읽어야 합니다.

관련 정보