새로운 병합 파일을 병합/결합하거나 생성하고 싶습니다. 두 파일 모두 첫 번째 열에 공통 ID가 포함되어 있습니다.
파일 1은 다음과 같습니다
ID
Tb927.4.4670
Tb927.8.3630
Tb09.160.4310
Tb927.8.3650
파일 2에는 아래와 같이 각 유전자의 ID와 기능이 포함되어 있습니다.
ID Function 1 Other field
Tb09.211.0140 A eg
Tb11.03.0080 B eg
Tb927.8.6200 C eg
Tb927.7.690 D eg
그러나 모든 유전자에 알려진 기능이 없기 때문에 파일 2에는 일부 ID가 누락되어 파일 1보다 파일 2에 더 적은 필드가 있습니다. 파일 2의 ID도 파일 1과 다르게 정렬됩니다.
병합된 파일이 파일 1의 순서를 따르고 출력에 병합 기능을 포함하기를 원합니다. 비어 있거나 누락된 ID에 대해 '-'와 같은 항목을 반환할 수 있습니다.
Linux 명령을 사용하여 이러한 파일을 병합할 수 있습니까?
답변1
사용awk
awk 'NR == FNR{a[$1]=$0; next};
($1 in a){print a[$1]; next};
{print $1, "-", "-"}' file2 file1
아니면 좀 더 간결하게
awk 'NR == FNR{a[$1]=$0; next};
{print $1 in a?a[$1]:$1FS"-"FS"-"}' file2 file1
답변2
많은 수의 파일 로 작업하면 sort(1)
프로그램이 이미 정렬된 파일을 병합할 만큼 똑똑합니다.