数据处理awk命令使用

 

 

 awk 是数据处理工具,他将一行数据分成多个字段来处理;

 默认:

 awk用空格来分割(分隔符可以自定-F)每一行数据,分割后用$N来取出分割后的每一个字段,

 用NF获取一共有多少字段(一般用这个可以过滤掉一些有缺陷的数据),

 awk默认每次读取到"\n"即回车为一行数据,可以用RS来自定义 

 分割后的数据各个字段输出默认为space来分割,可以用OFS来确定输出的分隔符

 

 可以用NR拿到数据处理到哪一行了

 可以用FNR获取数据总的记录数 

 可以读从哪个行到哪一行的数据: awk 'NR==10,NR==15{print}' a

 然后可以通过{print}来打印数据到控制台或者重定向到文件中 

 

 

1 语法格式 

  awk [-参数 变量] 'BEGIN{初始化}条件类型1{动作1}条件类型2{动作2}。。。。END{后处理}'

其中:BEGIN和END中的语句分别在开始读取文件(in_file)之前和读取完文件之后发挥作用,可以理解为初始化和扫尾。

2 参数说明:

  -F re:允许awk更改其字段分隔符

   -v var=$v 把v值赋值给var,如果有多个变量要赋值,那么就写多个-v,每个变量赋值对应一个-v

    e.g. 要打印文件a的第num行到num+num1行之间的行, 

      awk -v num=$num -v num1=$num1 'NR==num,NR==num+num1{print}' a 

3 内置变量

NR    已经读出的记录数

FNR    当前文件的记录数

FS    输入字段分隔符(缺省为:space:),相当于-F选项

OFS输出字段分隔符(缺省为:space:)

RS:输入记录分隔符,缺省为"\n"

ORS:输出记录分隔符,缺省为换行符,控制每个print语句后的输出符号

 

4例子:

1 读取两个文件

awk '{if(ARGIND==1){print "处理a文件"} if(ARGIND==2){print "处理b文件"}}' a b

2 控制读取到那个文件

 awk 'NR==FNR{print "处理文件a"} NR > FNR{print "处理文件b"}' a b

3 处理从哪一行到哪一行

awk 'NR==10,NR==15{print}' a

4 分隔符使用

awk -F ':' '{print}' a    和   awk 'BEGIN{FS=":"}{print}' a 是一样的

5 行分隔符使用: 

 awk -F ':' 'BEGIN{OFS=";"}{print $1,$2,$3}' b

6 打印当前记录字段个数

awk -F ':' '{print NF}' b

7 处理数据不规则的行

awk -F ':' '{if (NF == 3)print}' b

8 行分隔符使用

awk 'BEGIN{ RS = ";" } {print}' c 

 

小注释:awk把分割后的第1、2、3个字段用$1,$2,$3...表示,$0表示整个记录(一般就是一整行))

 

单引号处理:遇到单引号要用\ 转义,为了说明 \ 是转义字符要使用 ''单引号括起来,然后后面加一个单引号,如下:

awk -F ''\''' '{print $2}{print NF}' sucess.txt ;  

 

9 例子字符串连接: 

Ent_ID  企业 ID

ID  专利 ID

EntName  企业名称

IsDownDetail

 

 

awk -F "  " '{a="private" ;b=$1; c=(a" "b " // " $2 " ; ");print c }' zhuanli.txt  

 

输出:

private Ent_ID // 企业 ID  ; 

private ID // 专利 ID  ; 

private EntName // 企业名称  ;

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值