awk常用功能--持续更新

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

你可能感兴趣的:(awk常用功能--持续更新)