다음 내용을 포함하는 두 개의 파일이 있습니다.
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