2021-01-09

Awk
2021年1月7日
16:22

概念
除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具
awk是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一
awk命名: Aho、Weingberger 和 Kernighan三个人的姓的缩写。
常用的是gawk,awk是gawk的链接文件
在这里插入图片描述

格式:
#awk [-F 域分隔符] ‘命令’ 文件名
其中[-F 域分隔符]是可选的
-F fs :指定以fs为输入行的分隔符,默认分隔符为空格
-v var=var 在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val
例: awk '/^KaTeX parse error: Expected group after '^' at position 41: …est.txt 在此命令中,/^̲/ 是一个正则表达式,功能是匹配文本中的空白行,同时可以看到,执行命令使用的是 print 命令,此命令经常会使用,它的作用很简单,就是将指定的内容进行输出。因此,整个命令的功能是,如果 test.txt 有 N 个空白行,那么执行此命令会输出 N 个 Blank line。
注:在 awk 程序执行时,如果没有指定执行命令,则默认会把匹配的行输出;如果不指定匹配规则,则默认匹配文本中所有的行。

匹配规则{执行命令}’
任何awk语句都是由’匹配规则{执行命令}‘组成,一个awk中可以有多个语句。匹配规则决定执行命令的执行条件。
例如上面举的例子中’/^KaTeX parse error: Expected group after '^' at position 26: …Blank line"}',/^̲/就是匹配规则,print就是执行命令,当文件中有匹配/^$/条件的行是就会执行pirnt命令。
执行命令(动作action):
awk的执行命令在大括号{ }内指明。动作大多数用来打印(即print指令)
动作(Action):
格式化输出(print);
流程控制语句(if、while、for等);
例如:显示passwd文件中第1个第6个字段的信息
在这里插入图片描述

awk中的BEGIN和END
语法:
awk [options] ‘BEGIN{ print “start” } 匹配规则{ commands } END{ print “end” }’ 文件名
注意:BEGIN END是AWK的关键字,因此必须大写;这两个部分开始块和结束块是可选的
BEGIN模块:BEGIN 的执行时机是"在 awk 程序一开始,尚未读取任何数据之前"。一旦BEGIN后的动作执行一次,当awk开始从文件中读入数据时,BEGIN 的条件就不再成立,所以BEGIN定义的动作只能被执行一次。
END模块:END也是awk的保留字,不过刚好和 BEGIN 相反。END 是在 awk 程序处理完所有数据,即将结束时执行的。END 后的动作只在程序结束时执行一次。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值