所以我有这个文件,它有超过480000行和1380列。
如果第二行中的值是Sex:Female或Sex:Male,我需要一个将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 - Perl,根据第二行中的值更改第一行中的值,,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20008395/