
두 개의 파일이 있습니다. 의 첫 번째 부분에 있는 두 번째 열의 쉼표로 구분된 값을 의 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 버전을 선호합니다)