별도 파일의 열 일치

별도 파일의 열 일치

두 개의 파일이 있습니다. 의 첫 번째 부분에 있는 두 번째 열의 쉼표로 구분된 값을 의 File1첫 번째 열 값 과 일치시키고 File2에 쓰고 싶습니다 File2. 이 작업을 어떻게 수행합니까?awk

파일1

Column1    Column2
A          G1,G2
B          G4,G1

파일2

G1
G2

원하는 결과

Column1    Column2
G1         A,B
G2         A

답변1

이 시도

awk '
  NR==1 {
    print;
    next;
  }
  NR==FNR {
   split($2,a,","); 
   for(i in a) b[a[i]] = b[a[i]]==""? $1 : b[a[i]] "," $1;
   next;
  }
  {
    if ($1 in b) print $1 "\t" b[$1];
  }
  ' File1 File2

헤더 라인이 없거나 필요하지 않은 경우 첫 번째 규칙/작업 쌍을 삭제하여 단순화할 수 있습니다.

답변2

perl -nE ' chomp; 
   ($a,@b)= split(/[\t,]/,$_); 
   for(@b){ $aux{$_}.= ",$a" } 
   say "$_$aux{$_}" =~ s/,/\t/r  unless @b
   ' file1 file2

(알겠습니다. @steeldriver 버전을 선호합니다)

관련 정보