내 친구가 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을 더하고 합계의 자연 로그를 반환합니다.