1. awk命令实现文本内容行列转化
awk -F '\t' '{for(i=1;i<=NF;i=i+1){a[NR,i]=$i}}END{for(j=1;j<=NF;j++){str=a[1,j];for(i=2;i<=NR;i++){str=str "\t" a[i,j]}print str}}' file> outfile
2. awk找出两个文件中相同的行
awk 'NR==FNR{a[$0]++} NR>FNR&&a[$0]' file1 file2 > same.txt
3. awk找出文件1在文件2没有的值
awk 'NR==FNR{a[$0]++} NR>FNR&&!a[$0]' file1 file2 > lack.txt
4. 计算两列的和,然后求出和的比值
awk 'BEGIN{x=0;y=0}{x+=$3;y+=$4}END{print x/y}' file
5. 绝对值
awk -F '\t' 'function abs(x) {return ((x <0.0) ? -x : x)} {if (abs($9) < 500) print $0}'
6. 批量做链接
ls /share/path/ |awk '{print "ln-s /share/path/"$1" "$1" " }'
7. 截取字符串
awk '{print substr($0,0,5)}' file
8. 拆分成数组,进而比较数组中的值
less -S file1 |awk -F '\t' '{split($8,m,"[/=]");split($9,n,"[/=]");if(m[2]>5&& m[3]>0.3 && n[2]>5){print $0}}' |less > out
9. 计算sam文件中每条reads的GC含量
samtools view test.bam | awk '{ n=length($10); print $10, gsub(/[GCCgcs]/,"",$10)/n;}' > GC.file