테이블 파일에서 여러 일치 항목을 찾고 두 번째 열을 인쇄하시겠습니까?

테이블 파일에서 여러 일치 항목을 찾고 두 번째 열을 인쇄하시겠습니까?

나는 이와 같은 테이블을 가지고 있으며 file이것이 내 인덱스입니다.

a   X001
a   X002
a   X003
b   X002
c   X006
z   X007
z   X008
z   X001

해당 인덱스를 기반으로 다음 단일 열 파일을 검색하여 반환하고 싶습니다 index.

a
b
z

따라서 이 검색의 결과는 다음과 같습니다.

X001
X002
X003
X002
X007
X008
X001

편집: 이것은 내 파일의 정확한 정보입니다(각 파일의 처음 10줄).

색인

10803548    COG4190
10803554    COG1476
10803555    COG1192
10803559    COG3385
10803567    COG0071
10803570    COG1695
10803571    COG0467
10803573    COG3883
10803574    COG0714
10803576    COG1192

내가 찾고 있는 파일:

10956722
11497860
11497860
11497924
11497924
11497924
11497924
11497924
11497979
11497979

이 검색에 대한 예상 결과:

COG3704
COG1474
COG1474
COG2801
COG2801
COG2801
COG2801
COG2801
COG2223
COG2223

답변1

그리고 join:

join -o1.2 <(sort -k1n index) <(sort -k1n file)
  • 그러면 필드 번호 1의 두 파일이 병합되고, 일치하면 첫 번째 파일의 두 번째 필드가 인쇄됩니다 1.2.

또는 다음을 사용하여 awk:

awk 'FNR==NR{a[$1]=1} FNR!=NR&&a[$1]{print $2}' file index
  • 파일이 file배열로 로드됩니다 a.
  • index두 번째 파일을 처리할 때 awk첫 번째 필드가 배열에 인덱스로 있는지 확인하세요 a[$1]. 그렇다면 두 번째 필드를 인쇄하세요 $2.

관련 정보