awk之文件行数
- 统计文件的行数:awk 'END{print NR}' file; awk '{print NR}' file
- 打印指定行:awk 'NR==3' file
- NR和FNR的区别:NR:awk开始执行程序后所读取的数据行数;FNR,与NR功能类似,不同的是awk每打开一个新文件,FNR便从0重新累计。
awk之按某列求和
- awk 'BEGIN{sum=0} {sum+=$1} END {print sum}' file
awk之for循环
- awk '{a[$1] = 1} END{for(i in a)print i}' file
awk之去重合并文件
awk两个文件join(包含关系)
- awk -F '\t' 'ARGIND1{a[$1]=1}ARGIND2{if($1 in a || $2 in a)print $3"\t"$4}' file_a file_b
- awk -F ‘\t’ ‘ARGIND1{a[$1]=1}ARGIND2{if($1 in a) next; else print $0}’ new old
awk join两个行数相同文件的快速方法
awk输出指定分隔符
- awk -F ‘\t’ ‘BEGIN{OFS=‘\t’}’
- awk -F ‘BEGIN{FS=‘\t’; OFS=‘\t’}’ ( ; 分割)
awk指定输入输出
- cat 123 | awk -v FS=" " -v OFS=" " '{print $1, $2}'
awk 一行转多行
- cat test.txt | awk 'BEGIN{RS=" "}{print $0}'
- echo “sheng bai rong” |xargs -n1
awk 多行转一行
- cat 123 | awk 'BEGIN{ORS=" " }{print $0}'
awk 将文本文件每一行中相同第一列对应的其他列进行拼接
cat final_label.txt | awk -F '\t' '{a[$1]=(a[$1]"\t"$2);} END{for(i in a) print i "\t"a[i]}' > final_label_ubs.txt
1 34
1 49
2 45
2 48
1: 34 49
2: 45 48
awk 匹配过滤
- cat mock | awk -F '\t' '{if(match($2,"rong"))print $0}'