在参考这个question regarding column to row transposition using awk时,我感到困惑的是为什么我不能连续显示最后一列,我怀疑行末尾的CR是否被添加到数组中进行打印。
根据the linked question on DOS endings似乎是这种情况如何从当前正在使用的awk脚本的上下文中的最后一个字段中删除CR(不运行类似dos2unix的内容):
{
if (!keys[$3]++) { b[++c] = $3; row1 = row1 OFS $3; row2 = row2 OFS $4 }
line = groups[$1][$3];
groups[$1][$3] = (line == ""? $6$7: line OFS $6$7)
}
END{
print row1 ORS row2;
for (i in groups) {
r = i;
for (j in b) r = r OFS groups[i][b[j]];
print r
}
}
疑似CR的列是7美元,例如
22405 XRJ27 IL17C rs4673 C______2038_20 N N
22405 XRJ27 CRP rs2794520 C____177486_10 T T
22405 XRJ27 G6PC2 rs560887 C____323082_10 C C
22405 XRJ27 TCN2 rs1801198 C____325467_10 G G
22405 XRJ27 SLC30A8 rs13266634 C____357888_10 C C
22405 XRJ27 COL5A1 rs12722 C____370252_20 C C
22405 XRJ27 LEPR rs1137100 C____518168_20 A G