<p>对于那些即将<code>awk</code>的人,我们向你们致敬!你知道吗</p>
<p><code>awk</code>是为这种处理而创建的。你知道吗</p>
<p>试一试:</p>
<pre><code>awk -F "," -v OFS="," '
FNR==1 {samples[++fni]=FILENAME}
{if (!taxakeys[$2]) {taxakeys[$2]=1; taxas[++ti]=$2};frequencies[samples[fni],$2]+=$1}
END {
printf("Sample"); for (j=1;j<=ti;j++) { printf("%s%s",OFS,taxas[j])}; printf("\n")
for (i=1; i<=fni; i++) {
printf("%s",samples[i]); for (j=1;j<=ti;j++) { printf("%s%d",OFS,frequencies[samples[i],taxas[j]])}; printf("\n")
}
}'
</code></pre>
<p>测试:</p>
<pre><code>$ awk -F "," -v OFS="," '
FNR==1 {samples[++fni]=FILENAME}
{if (!taxakeys[$2]) {taxakeys[$2]=1; taxas[++ti]=$2};frequencies[samples[fni],$2]+=$1}
END {
printf("Sample"); for (j=1;j<=ti;j++) { printf("%s%s",OFS,taxas[j])}; printf("\n")
for (i=1; i<=fni; i++) {
printf("%s",samples[i]); for (j=1;j<=ti;j++) { printf("%s%d",OFS,frequencies[samples[i],taxas[j]])}; printf("\n")
}
}' file_*
Sample,Salmo salar,Solanum pennellii,Staphylococcus xylosus,Strongyloides stercoralis
file_1,1,12,18,0
file_2,1,0,14,123
file_3,0,123,11,41
</code></pre>