首页 > awk 6.0 — awk模式之二

awk 6.0 — awk模式之二

awk的语法

awk [options] ‘Pattern {Actions}’ file1,file2…

之前介绍了三种模式:空模式,关系运算模式,BEGIN/END模式

正则模式

模式可以理解成条件,正则模式就是满足正则表达式条件的,就执行相应的动作,否则不执行。

如果我们想要找到在/etc/passwd文件中,以“_krb”开头的内容该如何找呢

grep "^_krb" /etc/passwd

同样的,我们想要使用awk的方式完成这个操作,

awk '/^_krb/{print $0}' /etc/passwd

比较一下上面两种方式,grep将正则表达式放在了双引号中,awk将正则表达式放在了两个反斜杠中。

上面示例看上去是grep更加的简介,但是有一些具体的case的时候,awk显得更加美观。awk有格式化输出的功能。请读者尝试着读下面的使用方式:

image

注意点:1. 如果在awk的正则中使用了/,这个时候就需要使用转义字符,假如下面的需求,我们想要从passwd文件中,找到/bin/bash作为登陆shell的用户,

awk '/bin/bash$/{ print $0} /etc/passwd'

注意点:2. 如果在正则中,需要使用形如{x,y}这种类型的表达式的时候,需要使用–posix,或者–re-interval选项

awk --posix '/he{2,3}y/{print $0} test'

行范围模式

假如有下面的文件(为了截图方便,我把文件和操作放在一起了)

image

文件中,hello出现了两次,world出现了一次,如果我想筛选出,hello第一次出现和world第一次出现中的所有行的内容,就使用上面的方式

总结一下就是,使用两个正则表达式,匹配所有的行,意思就是从第一个正则开始,到第二个正则结束匹配所有的行。

行范围模式另外一种方式,可以使用关系运算模式进行解决,比如打印3-6行的数据。

awk 'NR>=3 && NR<=6 {print $0}' test

更多相关:

  • 在运维过程中,发现portal中出现流量异常曲线, 就从排查ATS的访问日志中的异常域名开始,下面是我截获的对应时段的访问日志截图 发现里面有502,403等异常响应,我们将这段访问日志文件记为exception_peak.log。采用下面的命令来过滤出502的访问记录,并剥离出对应的访问链接的host,统计指定时段中...

  • 文章目录awk和sed的区别awk脚本的流程控制awk 记录和字段字段的引用awk表达式赋值操作符算数操作符系统变量(awk本身自定义的系统变量)关系操作符布尔操作符awk 条件和循环条件语句循环awk 的数组数组的定义数组的遍历删除数组举例,编写awk脚本文件`avg.awk`命令行参数数组复杂数组的使用案例awk函数算数函数字符...

  • 变量传递 外部变量传入 lsblk|awk -v A=$A -v B=$B '{print A,B}'lsblk | awk '{print A,B}' A=$A B=$B 内部变量传出 eval $(lsblk|awk '{print "A='$1'"}')eval $(lsblk|awk 'printf("A=%s ",$1)...

  • awk有一些内置变量和外置变量,内置变量就是awk自带的变量,用户可以拿来直接使用,如FS,OFS等 awk常用内置变量如下几种: FS:输入单词分隔符,默认是空格 OFS:输出单词分隔符,默认是空格 RS:指定输入时候的换行符(awk是一行行处理数据的) ORS:指定输出的符号,替代换行符(awk以换行符...

  • 再次重申awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2… awk模式,在之前的文章中简单使用了BEGIN和END。这里的模式,其实我们可以理解成是条件,awk是一行行处理数据的,如果满足某个条件awk就处理某一行数据,如果不满足就不处理,这就可以理解成模式。 意思就...

  • 一. vim的三种模式 在Linux操作系统下,我们一般会使用vim进行文本编辑,它相当于Windows下的记事本,但是它比记事本的功能强大的多。vim一般有三种模式分别是普通模式,编辑模式和命令模式。普通模式和编辑模式可以来回的切换,普通模式可以和命令模式来回的切换,但是编辑模式和命令模式不能来回的切换。 二. vim三种模...

  • 注意事项 1、U盘要是USB3.0的U盘,否则基本会失败 安装到最后的时候报一个 cd/dvd 设备 low speed的故障 2、bios 设置 硬盘模式 选择 AHCImode 模式, 否则刷机不成功 3、 U盘镜像的烧录方式, 实测windows 下的rufus工具有效...

  • linux 设置分辨率 如果你需要在linux上设置显示屏的分辨率,分两种情况:分辨率模式存在与分辨率模式不存在,具体如下。 1,分辨率模式已存在 1)如何查询是否存在: 图形界面:在System Settings/Displays/Resolution栏查看下拉列表。 控制台:在控制台输入命令:xrandr,即会输出当前已存...

  •   Bulk加载模式是Informatica提供的一种高性能数据加载模式,它利用数据库底层机制,依靠调用数据库本身提供的Utility来进行数据的加载  该方式将绕过数据库的log记录,以此提高数据库加载性能,因此Bulk模式不能进行数据的Rollback操作,也不可能使用数据库做Recover操作   因此当使用Bulk加载模式时...