理解 awk 程序的一部分

Mar*_*man 2 awk

我的一个朋友用 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
Run Code Online (Sandbox Code Playgroud)

但我不明白下面这行

 

for (i = 2; i <= 1099; i++)  printf "\t%g", log($i+1) > "gene_tumor.txt";\
Run Code Online (Sandbox Code Playgroud)

log($i+1) 在这里做什么?

Ste*_*itt 6

在AWK中,log()是自然对数$i函数,是当前记录中第i个字段的值。Solog($i+1)取第i个字段的值,加1,并返回总和的自然对数。