File1의 열을 File2의 열과 일치시키고 awk를 사용하여 파일에 인쇄합니다.

File1의 열을 File2의 열과 일치시키고 awk를 사용하여 파일에 인쇄합니다.

나는 awk를 처음 사용하고 file1과 file 2 사이의 ":"으로 구분된 열 1(예: chr10)과 2(예: 10000003)를 비교하고 awk를 사용하여 일치하는 행을 새 파일에 쓰려고 합니다.

파일 1:

chr10:10000003
chr10:10000005
chr10:10000015
chr10:10000017
chr10:100000202
chr10:10000033
chr10:100000380
chr10:10000043
chr10:100000465
chr10:10000052

파일 2:

chr1:1806476:T/C:-2.12680332451125 0.835119313863368\
chr1:1806503: 에어컨:-1.56871277809939 0.764924263070418\
chr10:10000003:C/T:-0.572267893158369 0.607055146639116\
chr1:1825420:C/T: 1.70588504817348 0.22407517592607\
chr1:2019496:G/C: 2.34709890656509 0.147215274051584\
chr1:2019501:C/T:-2.06157612494769 0.82769600171016\
chr10:100000202:C/A: 0.808838763489275 0.362093542746135\
chr1:2028192:G/A:-0.164564659049733 0.534780784989026\
chr1:2029672:C/A:-1.31298871130864 0.727940863740118\
chr1:2228889:C/G:-1.570481759004 0.765170049967457\
chr10:100000465:C/T:-0.701703282910107 0.629368417133545\
chr1:2306256:C/T:-1.72965371800758 0.786695642291442\

예상 출력: 파일 2와 동일한 형식으로 파일 2의 행 일치(위 참조)

chr10:10000003:C/T:-0.572267893158369 0.607055146639116\
chr10:100000202:C/A: 0.808838763489275 0.362093542746135\
chr10:100000465:C/T:-0.701703282910107 0.629368417133545\

지금까지 시도한 명령은 다음과 같습니다.

awk -F":\r" 'NR==FNR{a[$1$2]++;next}{if($1$2 in a){print}}' file1.txt file2.txt > output.txt
awk -F":\r" 'NR==FNR{a[($1$2)]++;next}{if(($1$2) in a){print}}' file1.txt file2.txt > 출력. txt

관찰된 오류는빈 출력.txt

오류를 지적하는 데 도움을 주실 수 있나요?

미리 감사드립니다!

답변1

질문이 있는 경우 다음 명령을 사용할 수 있습니다. 알려주세요.

awk 'NR==FNR{a[$1];next}($1 in a){print $0}'  file1 file2

답변2

이것이 당신에게 정말로 필요한 것입니다:

$ awk -F':' 'NR==FNR{a[$1,$2]; next} ($1,$2) in a' file1 file2
chr10:10000003:C/T: -0.572267893158369  0.607055146639116\
chr10:100000202:C/A:    0.808838763489275   0.362093542746135\
chr10:100000465:C/T:    -0.701703282910107  0.629368417133545\

관련 정보