두 개의 파일이 있습니다.
파일 1:
cluster17 7 Rde_Locus_34636 Rde_Locus_39558 Rde_Locus_44272 Rde_Locus_20977 Rde_Locus_50929 Rph_Locus_10923 Rph_Locus_65326
cluster18 7 Rde_Locus_1381 Rde_Locus_11734 Rde_Locus_4781 Rph_Locus_26879 Rph_Locus_7821 Rde_Locus_533 Rde_Locus_21493
cluster19 7 Rde_Locus_6450 Rde_Locus_10727 Rde_Locus_1801 Rde_Locus_25045 Rph_Locus_13685 Rph_Locus_6953 Rph_Locus_22248
cluster21 7 Rde_Locus_23138 Rde_Locus_10462 Rph_Locus_10145 Rph_Locus_49405 Rde_Locus_42639 Rph_Locus_70757 Rde_Locus_36462
파일 2:
Rde_Locus_36462 M2
Rde_Locus_42639 S1
Rde_Locus_4781 M5
Rde_Locus_533 M3
Rde_Locus_6450 M1
Rph_Locus_10145 S4
Rph_Locus_13685 M2
Rph_Locus_22248 M4
Rph_Locus_26879 S5
출력이 다음과 같도록 이 두 파일을 결합하고 싶습니다.
cluster17 7 Rde_Locus_34636 Rde_Locus_39558 Rde_Locus_44272 Rde_Locus_20977 Rde_Locus_50929 Rph_Locus_10923 Rph_Locus_65326
cluster18 7 Rde_Locus_1381 Rde_Locus_11734 Rde_Locus_4781_M5 Rph_Locus_26879_S5 Rph_Locus_7821 Rde_Locus_533_M3 Rde_Locus_21493
cluster19 7 Rde_Locus_6450_M1 Rde_Locus_10727 Rde_Locus_1801 Rde_Locus_25045 Rph_Locus_13685_M2 Rph_Locus_6953 Rph_Locus_22248_M4
cluster21 7 Rde_Locus_23138 Rde_Locus_10462 Rph_Locus_10145_S4 Rph_Locus_49405 Rde_Locus_42639_S1 Rph_Locus_70757 Rde_Locus_36462_M2
즉, 의 해당 일치 항목에 _$2
from을 추가합니다 . 나는 대답이 어떤 조합 이라고 생각 하지만 나는 그것으로 어려움을 겪고 있습니다. 정렬을 할 수 없기 때문에 이것을 사용할 수 없습니다 .File2
File1
grep -f
sed
join
File1
답변1
가능한 접근 방식은 다음과 같습니다. 연관 배열이 있는 조회 테이블을 사용하는 것입니다 awk
.
awk '
NR==FNR {
a[$1] = $1 "_" $2; next;
}
{
for (i=1;i<=NF;i++) {if ($i in a) $i = a[$i];}
}
1' file2 file1
본 사이트에서 "join awk"라고 검색하시면 유사한 예가 많이 있습니다.