我的一个朋友在unix下写了一段代码
awk '\
BEGIN { OFS = "\t"; FS = "\t"} ;\
(NR >= 2){\
split($3,a,"|");\
if(a[1]!~ /\?/) {\
print a[1], a[2] > "geneinfo_tumor.txt";\
printf "%s", a[1] > "gene_tumor.txt";\
for (i = 2; i <= 1099; i++) printf "\t%g", log($i+1) > "gene_tumor.txt";\
printf "\n" > "gene_tumor.txt";}\
}' tumor.exp.gt.txt
但我不明白下面这一行
for (i = 2; i <= 1099; i++) printf "\t%g", log($i+1) > "gene_tumor.txt";\
log($i+1) 在这里做什么?
答案1
在 AWK 中,log()
是自然对数函数,$i
是我当前记录中的第 th 字段。所以log($i+1)
取值我th 字段,加 1,并返回总和的自然对数。