File1
유전자 목록(문자로 표시)이 포함되어 있습니다. 각 유전자는 그것이 표현하는 단백질에 의해 설명됩니다(문자로 표시됨).
a-1
b-2
c-3
File2
유전자 목록도 포함되어 있지만 각 유전자는 여러 번 반복됩니다. 이 유전자 중 일부는 다음과 유사합니다 File1
.
a
a
a
b
b
c
c
c
File1
중국에 공유된 유전자를 모두 찾아내야 한다 File2
. Common은 세 번째 파일로 인쇄해야 합니다(여러 사본의 경우에도 마찬가지). 이 외에도 유전자가 발현하는 단백질 종류도 함께 적어야 합니다( 에서와 마찬가지로 File1
).
다음은 어떻게 얻을 수 있나요 File3
?
a-1
a-1
a-1
b-2
b-2
c-3
c-3
c-3
답변1
ARGIND
처리 중인 현재 파일의 인덱스 인 내장 변수가 있는 gawk를 사용하여 이를 수행하는 간단한 방법은 다음과 같습니다 .ARGV
첫 번째 파일의 각 입력 라인을 분할하고 첫 번째 필드 인덱스를 -
전체 라인을 저장하는 배열로 사용합니다. table
두 번째 파일(및 후속 파일)의 경우 전체 행을 인덱스로 사용하여 table
원하는 행을 검색합니다.
BEGIN{FS = "-"}
ARGIND==1{table[$1] = $0}
ARGIND>1{print table[$0]}
또는 한 줄로:
awk 'BEGIN{FS = "-"}; ARGIND==1{table[$1] = $0}; ARGIND>1{print table[$0]}' file_1 file_2
다음은 전통적인 awk의 또 다른 버전입니다. FNR
현재 입력 파일의 입력 레코드 개수와 NR
지금까지 본 전체 입력 레코드 개수를 비교하여 현재 파일이 첫 번째 파일인지 판단합니다 .
awk -F'-' 'NR==FNR{table[$1] = $0}; NR>FNR{print table[$0]}' file_1 file_2