AWK 常见基本用法

在Linux下进行一些简单的文本处理, 尤其是涉及数据基本过滤加工汇总的,awk 十分方便, 复杂的处理还是用python比较好。总结一下一些 awk 的常用技巧:

按列条件过滤

awk '{print $1, $3}' info.txt         # 输出指定列
awk '$2==1 && $5=="ERROR"' info.txt   # 按条件过滤,$2是内置变量,表示第二列
awk '$2>1' info.txt                   # 按条件过滤,如果列为数字,其大小可以作为比较条件

行号

awk '$2==1 && $5=="INFO" || NR==1'                            # 内置变量NR:表示行号
awk '$2>2 && NR!=1 {printf "line:%u %s\n", FNR, $0}' info.txt # 内置变量FNR:表示文件行号

指定分隔符

awk -F: '{print $1,$3}' info.txt       # -F 指定列分隔符,缺省是空格或tab,这里制定冒号
awk -F '[:,]' '{print $1,$3}' info.txt # -F 制定多个列分隔符

格式化输出

awk '$2==0 || NR==1 {printf "%-10s %-10s\n",$1,$5}' info.txt  ## printf 用法同C语言中的

字符串匹配

awk '/mode/' info.txt                     # 匹配含mode的行,引号可不输,类似 grep mode info.txt
awk '!/mode/' info.txt                    # 匹配不含mode的行,类似于 grep -v 的用法
awk '/mode|mode2/' info.txt               # 匹配含mode或者mode2的行,正则匹配用法
awk '$12 ~ /work/ {print $12}' info.txt   # 第12列匹配work,指定列进行字符串匹配
awk '$12 !~ /work/ {print $12}' info.txt  # 第12列不匹配work,类似于 grep -v 的用法

拆分重定向

awk 'NR!=1{print > $2}' info.txt      # 按照第2列进行拆分,第二列一样的内容重定向到以第二列命名的文件里

简单的统计

awk '{sum+=$2} END {print sum}' info.txt # 求第二列的和,END表示处理完毕所有行
root@ubuntu:/media/psf/Home/iLearning/tmp# cat info.txt
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    Mar13   0:01 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Mar13   0:05  \_ [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Mar13   0:00  \_ [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    Mar13  22:07  \_ [rcu_sched]
root@ubuntu:/media/psf/Home/iLearning/tmp# awk '{sum+=$2} END {print sum}' info.txt  
17

参考

AWK 简明教程
The GNU Awk User’s Guide

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值