Linux中的awk命令

       记得去年的时候,我写过一篇名叫《Linux系统常用的基本命令》的文章,本文算是它的一个补充,主要讲述Linux中的awk命令。因为水平有限,文章中难免会出现错误,如果不当之处,欢迎大家指出。一起来看一下吧~


一、选项参数说明

       awk是一种处理文本文件的语言,我们可以使用awk --help查看一下它的选项参数,如下:

二、基本用法

       1、行匹配语句,此处awk后只能跟单引号,格式如下:

awk '{匹配的内容}' 匹配的文件名称

       例如:

       现有如下测试文件test:

       使用如下命令输出文中每行的1、4项内容:

awk '{print $1,$4}' test

       也可以添加如下内容使其格式化输出:

awk '{printf "%-8s %-10s\n",$1,$4}' test 

       2、指定分隔符

awk -F  # -F相当于内置变量FS,指定分割字符

       例如:

       有如下test文件:

       执行如下命令,使用逗号分割输出每行的第一、二项内容:

awk -F, '{print $1,$2}' test

       也可以使用内建变量,格式如下:

 awk 'BEGIN{FS=","} {print $1,$2}' test 

       对于使用多个分隔符,首先使用空格分割,然后再使用其他分割符进行分割:

awk -F '[ ,]'  '{print $1,$2,$4}' test

       3、设置变量

awk -v

       例如:

       现有如下数据:

       执行如下命令,每行第一项加1: 

awk -va=1 '{print $1,$1+a}' test

       也可以使用如下命令设置多个变量:

awk -va=1 -vb=s '{print $1,$1+a,$1b}' test

       4、通过awk脚本来运行awk命令

awk -f awk脚本 文件名

       例如:

awk -f file.awk test

三、运算符

       例如:

      1、过滤第一列大于2的行

awk '$1>2' test

       2、过滤等于2的列

awk '$1==2 {print $1,$3}' test

       3、过滤第一列大于2并且第二列等于Are的行

awk '$1>2 && $2=="Are" {print $1,$2,$3}' test

四、内建变量

例如:

awk 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' test

awk -F\' 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' test

awk '{print NR,FNR,$1,$2,$3}' test

awk '{print $1,$2,$5}' OFS=" $ " test

五、使用正则,字符串匹配

      例如:

       1、输出第二列包含“th”并打印第二列与第四列。

awk '$2 ~ /th/ {print $2,$4}' test

       ~表示模式开始,//中存放匹配的模式。

       2、输出包含“re”的行

awk '/re/ ' test

六、忽略大小写

awk 'BEGIN{IGNORECASE=1} /this/' test

七、模式取反

awk '$2 !~ /th/ {print $2,$4}' test

awk '!/th/ {print $2,$4}' test

八、awk脚本

       关于awk脚本,需要注意BEGIN和END两个关键词:

       (1)BEGIN{存放执行前的语句};

       (2)END{存放处理完所有的行后要执行的语句}。

       例如:

       现有数据如下:

       我们的awk脚本内容如下:

       执行结果如下:

 

你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

象在舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值