![다른 파일의 열을 기반으로 고유한 행을 선택하는 방법은 무엇입니까?](https://linux55.com/image/166710/%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%97%B4%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%EA%B3%A0%EC%9C%A0%ED%95%9C%20%ED%96%89%EC%9D%84%20%EC%84%A0%ED%83%9D%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
2개의 유전자 데이터 세트가 있습니다. 파일 1은 txt 파일이고 해당 염색체 ID는 모두 파일 2에도 나타납니다. 파일 2는 파일 1보다 크고 고유한 염색체 ID가 더 많은 csv 파일입니다. 파일 1과 비교하여 고유한 염색체 ID를 가진 파일 2의 행만 추출하려면 어떻게 해야 합니까?
예를 들어 내 데이터는 다음과 같습니다.
파일 1(염색체 위치는 실제로 내 125번째 열입니다....):
Gene pval ... Chromosome position ID
ACE 0.002 ... 01:3290834_CT_C_1
NOS 0.01 ... 03:3304593_GA_G_1
BRCA 0.004 . ... 06:6265733_GA_G_1
CYP3 0.34 ... 09:9433933_GA_G_1
파일 2(염색체 위치가 첫 번째 열임):
Chromosome position ID Gene pval
01:1243933_GA_G_1 ACE 0.002
03:3304593_GA_G_1 NOS 0.01
06:6265733_GA_G_1 BRCA 0.004
09:9433933_GA_G_1 CYP3 0.34
염색체 위치 ID만을 기준으로 파일 2에만 나타나는 출력의 유일한 줄은 다음과 같습니다.
Chromosome position ID Gene pval
01:1243933_GA_G_1 ACE 0.002
uniq
이 출력을 사용하여 얻으려고 시도했지만 sort
지금까지는 여러 텍스트 파일을 사용하는 온라인 예제만 찾았지만 대신 고유한 ID 행이 아닌 일치하는 ID 행을 사용하고 싶습니다. 이 방법도 시도했지만 grep
파일 크기가 커서 명령이 종료되었습니다.
답변1
다른 스레드의 솔루션 수정(셸 확장 파일 [12] 제외):
awk ' FNR==NR {P[$125]; next} FNR==1 || !($1 in P)' file1 file2
Chromosome position ID Gene pval
01:1243933_GA_G_1 ACE 0.002