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