파일이 있어요
head top_candidates
25 elevation_e gene1 20 9 0.0246022994932004 5 8 10.9217937824527
30 elevation_e gene1 59 18 0.0246022994932004 7 12 15.653559774527
31 elevation_e gene3 34 10 0.0246022994932004 6 9 9.47018201139585
108 elevation_e gene3 18 6 0.0246022994932004 4 7 6.86419248099239
그리고 또 다른 파일
head genes.bed
Chr00c0001 52974 70567 gene1
Chr00c0003 32983 33237 gene2
Chr00c0003 36241 36792 gene3
Chr00c0003 100286 101468 gene4
Chr00c0004 80876 93710 gene5
파일 2의 열 4(gene1,2,..)가 파일 1의 열 3과 일치하면 두 번째 파일의 열 1,2, 3을 첫 번째 파일에 붙여넣고 싶습니다.
내가 원하는 출력:
head desired
25 elevation_e gene1 20 9 0.0246022994932004 5 8 10.9217937824527 Chr00c0001 52974 70567
30 elevation_e gene1 59 18 0.0246022994932004 7 12 15.653559774527 Chr00c0001 52974 70567
31 elevation_e gene3 34 10 0.0246022994932004 6 9 9.47018201139585 Chr00c0003 36241 36792
108 elevation_e gene3 18 6 0.0246022994932004 4 7 6.86419248099239 Chr00c0003 36241 36792
답변1
어때요?
awk 'NR == FNR {T[$4] = $1 FS $2 FS $3; next} FNR == 1 {print "head desired"; next} {print $0, T[$3]}' file2 file1
head desired
25 elevation_e gene1 20 9 0.0246022994932004 5 8 10.9217937824527 Chr00c0001 52974 70567
30 elevation_e gene1 59 18 0.0246022994932004 7 12 15.653559774527 Chr00c0001 52974 70567
31 elevation_e gene3 34 10 0.0246022994932004 6 9 9.47018201139585 Chr00c0003 36241 36792
108 elevation_e gene3 18 6 0.0246022994932004 4 7 6.86419248099239 Chr00c0003 36241 36792