두 파일을 비교하고 내용을 표시합니다.

두 파일을 비교하고 내용을 표시합니다.

다음 내용을 포함하는 두 개의 파일이 있습니다.

File 1

OG5_126568
OG5_126583
OG5_126593
OG5_126596
OG5_126599
OG5_126609

File2

OG5_126568  psychrobacter_aquaticus.txt WP_021813339.1
OG5_126583  psychrobacter_aquaticus.txt WP_040642027.1
OG5_126583  psychrobacter_phenylpyruvicus.txt   WP_028858051.1
OG5_126585  psychrobacter_piscatorii.txt    WP_058023688.1
OG5_126593  psychrobacter_aquaticus.txt WP_021813641.1
OG5_126593  psychrobacter_aquaticus.txt WP_021814787.1
OG5_126593  psychrobacter_piscatorii.txt WP_021814787.1
OG5_126593  psychrobacter_phenylpyruvicus.txt   WP_021814787.1

첫 번째 파일을 두 번째 파일과 비교하여 일치하는 내용만 포함된 새 파일을 생성하고 싶습니다.

생성된 파일

    OG5_126593  psychrobacter_aquaticus.txt WP_021813641.1
    OG5_126593  psychrobacter_aquaticus.txt WP_021814787.1
    OG5_126593  psychrobacter_piscatorii.txt WP_021814787.1
    OG5_126593  psychrobacter_phenylpyruvicus.txt   WP_021814787.1

어떤 명령을 사용해야 합니까?

답변1

이 질문은 이미 답변이 있는 질문과 매우 유사합니다.https://stackoverflow.com/questions/13272717/inner-join-on-two-text-files

(예제 파일 내용에 적용되는) 가장 간단한 방법은 다음을 사용하는 것입니다.

join file1 file2

이는 입력 파일이 정렬되어 있다고 가정합니다.

답변2

이는 솔루션과 동일 join하지만 입력 파일을 정렬할 필요는 없습니다.

awk 'NR==FNR {f1[$1]; next} $1 in f1' file{1,2}

답변3

File1의 행을 패턴으로 사용하고 그 중 하나와 "일치"하는 모든 행을 인쇄하려면 다음을 사용할 수 있습니다 grep.

grep -f File1 File2

관련 정보