注:运算操作下{}的应用,运算时 += 这两个中间不能用空格
1.使用两个括号,{运算完} END {打印结果}
awk '{sum+=$1}END{print sum}' sum.txt
2.添加条件,如果第一列是1,求和第二列(基因组中常用,第一列多为染色体号)
awk '{if($1==1) sum+=$2} END {print sum}'
usage:
{}: 逐行处理
END{}: 处理完最后以行文本后执行,一般用来处理输出结果
if 连接多条件 &&
3.两列相乘和除以第一列的和, 逐行处理时,用分号分隔不同处理
awk '{sum1 += $1; sum2 += $1 * $2} END {print sum2/sum1}'
4.NF(Number of Fileds)(字段,列)的用法
4.1.awk求所有列的字符串总数,先-F "",再 print NF
awk -F "" '{print NF}' a.txt
4.2.awk求所有行,某个字符串隔开后的字段数
les a.txt | cut -f 5 | awk -F "," '{print NF}' | wc -l
5.NR(Number of Record)(行)的用法,不要第一行,从后面开始
awk 'NR>1{要实现的功能}'
awk -F "," ' {print NF}'
6.awk在脚本中如何传递参数
for i in `a`; do less $i.diver | awk -v var="$i" '{print var"\t"$3}'> $i.di;done
7.awk取绝对值,和对数
s contr | cut -f 4 | awk '{if($1 < 0) $1 = -$1; print $1}' | awk '{print log($1)}'
8.awk去除符号或者符号替换
awk '{gsub(/"/, "", $10); gsub(/;/, "", $10);print $1}
网友评论