file1.txt(50줄)
TERYUFV00000010753
TERYUFV00000009526
file2.txt(500줄)
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000018907 refids_12023_known_21/22_target
TERYUFV00000010753 refids_11775_known_1/1_target
출력.txt
TERYUFV00000010753 refids_11775_known_1/1_target
TERYUFV00000009526 refids_739_known_8/10_target
file1.txt(50줄)와 file2.txt(500줄)를 비교하고 file2.txt에서 file1.txt와 동일한 목록을 얻습니다.
Join 및 fgrep 명령을 시도했는데 빈 파일이 출력됩니다.
답변1
조인을 사용할 때 각 행의 항목은 데이터베이스의 "셀"과 비슷하지만 정렬되어야 하므로 시도해 볼 수 있습니다.
sort file1.txt > file1_t.txt
sort file2.txt > file2_t.txt
그런 다음 연결
$ join file1_t.txt file2_t.txt
이렇게 하면 두 파일 모두에 있는 모든 셀 항목의 목록인 외부 조인이 제공됩니다. 이 목록을 단 두 개의 파일 항목으로 줄이려면 위 명령의 출력을 uniq로 파이프하십시오.
$ join file1_t.txt file2_t.txt | uniq
답변2
fgrep -f file1.txt file2.txt
여기서는 file1.txt에서 검색 패턴을 가져와서 file2.txt에서 검색합니다. 텍스트가 고정되어 있으므로 fgrep
더 빠른 검색 작업을 위해 사용합니다.
답변3
sort
당신은 당신보다 먼저 있어야 합니다 join
.
$ cat a.in
TERYUFV00000010753
TERYUFV00000009526
$ cat b.in
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000018907 refids_12023_known_21/22_target
TERYUFV00000010753 refids_11775_known_1/1_target
$ join a.in b.in
$ join <(sort a.in) <(sort b.in)
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000010753 refids_11775_known_1/1_target
답변4
다음 줄이 유효합니까?
grep -iw -f file1.txt file2.txt
파일이 Windows 클라이언트에서 서버로 업로드되는 경우 먼저 dos2unix를 실행해야 합니다.
dos2unix file1.txt file2.txt
위 명령이 작동하지 않으면 다음 줄을 시도하여 file1.txt 줄의 시작이나 끝에 추가로 인쇄되지 않는 문자가 있는지 확인할 수 있습니다. file1.txt 항목에 인쇄되지 않는 불필요한 문자가 있으면 file2.txt의 grep이 실패할 수 있습니다.
cat -v file1.txt
sed -n -l file1.txt