生信宝典
Linux学习 - 常用和不太常用的实用awk命令
(1)awk读取单个文件 awk 'BEGIN{OFS=FS="\t"}{print $0,$1;}' filename
读取多个文件 awk 'BEGIN{OFS=FS="\t"}ARGIND=1{print $0,$1}ARGIND=2{print $0,$1}' file1 file2
(2)awk后面的命令部分可用单引号或双引号括起来。
FS | field separator;文件输入时的列分隔符 |
OFS | output field separator;文件输出时的l列分隔符 |
BEGIN | 设置初始参数,初始化变量 |
END | 读完文件后做的最终处理 |
{} | 循环读取文件的每一行 |
$0 $1 $2 $NR | 一行内容,第一列、第二列、最后一列 |
NF | number of field 文件多少列 |
NR | number of row 文件读了多少行 |
FNR | 当前文件读了多少行 |
var[index]=element | 索引操作,类似于字典 |
(3)针对特定列的计算
一个ehbio.wig文件
awk 'BEGIN{OFS=FS='\t'}{$2=$2*10^6/(2.5*10^6);print $0}' wig
(3)计算某l列内容出现的次数
cat count
awk 'BEGIN{OFS=FS="\t"}{if (FNR>1) a[$2]+=1;}END{print "Type\tCount"};for (i in a) print i,a[i];' count