awkプログラムの一部を理解する

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

しかし、次の行を理解していません。

 

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

log($i+1) はここで何をしていますか?

ベストアンサー1

AWKでは、log()自然対数関数は$i次のとおりです。現在のレコードの最初のフィールドです。だからlog($i+1)価値は番目のフィールドに 1 を加算し、合計の自然対数を返します。

おすすめ記事