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