awk

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}'
posted @ 2020-02-01 14:04  baishengguan  阅读(157)  评论(0编辑  收藏  举报