使用示例输入下面的awk
会输出以下内容:基本上,它会平均$5
中与7 < 30
匹配的文本。
awk '{if(len==0){last=$5;total=$7;len=1;getline}if($5!=last){printf("%s\t%f\n", last, total/len);last=$5;total=$7;len=1}else{total+=$7;len+=1}}END{printf("%s\t%f\n", last, total/len)}' Input.txt > output.txt
示例输入
chr 1 955542 955763 + AGRN:exon.1 1 0
chr 1 955542 955763 + AGRN:exon.1 2 0
chr 1 955542 955763 + AGRN:exon.1 3 0
chr 1 955542 955763 + AGRN:exon.1 4 1
chr 1 955542 955763 + AGRN:exon.1 5 1
chr 1 955542 955763 + AGRN:exon.1 6 1
....
....
chr 1 955542 955763 + AGRN:exon.1 218 32
chr 1 955542 955763 + AGRN:exon.1 219 32
chr 1 955542 955763 + AGRN:exon.1 220 32
chr 1 955542 955763 + AGRN:exon.1 221 29
输出
AGRN:exon.1 4.5714285
我的问题是我似乎无法添加正确的语法,该语法也会输出代表$6
的{{1}}中的总行数和$5
的{我知道我的单词的%可能不是那么有用所以希望所需的输出会有所帮助。谢谢你:)。
所需的输出
7 < 30
答案 0 :(得分:2)
我不认为你的程序符合你的意思。无论这可能是你正在寻找的东西
$ awk '$8<30{a[$6]+=$7;c[$6]++}
{t[$6]++}
END{for(i in a) print i,a[i]/c[i],(100*c[i]/t[i])"% ("t[i]" lines)"}' file
将从输入文件中删除...
行
AGRN:exon.1 34.5714 70% (10 lines)