所以我的这个文件有超过 480000 行和 1380 列。 如果第二行中的值是性别:女性或性别:男性,我需要一个将 F_ 或 M_ 添加到第一行中的值的管道。
我文件中的第一行基本上是个人 ID,后跟单元格类型 -N 或 -G。第二行表示该个体是女性还是男性,其余行是第一列中的 probe_Id,其他列是每个个体对应的 beta_value。如果这样做更有意义,我会添加以下几行。
我的输入文件是这样的(制表符分隔),没有第一列。
1740-N 1546-N 1546-G 1740-G 1228-G 5121-N 5121-G
Sex: Female Sex: Female Sex: Female Sex: Female Sex: Male Sex: Female Sex: Female
我的输出应该是这样的(制表符分隔),没有第一列
F_1740-N F_1546-N F_1546-G F_1740-G M_1228-G F_5121-N F_5121-G
注意没有输出性别线。
有人可以帮忙吗?如果列数较少,我会手动执行。
这可以在任何程序中完成;我不坚持使用 perl
最佳答案
$ awk -F'\t' '
NR%2 { split($0,a); next }
{
for (i=1;i<=NF;i++)
printf "%s%s_%s", (i==1?"":FS), ($i~/Female/?"F":"M"), a[i]
print ""
}
' file
F_1740-N F_1546-N F_1546-G F_1740-G M_1228-G F_5121-N F_5121-G
关于Perl,根据第二行中的值更改第一行中的值,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20008395/