shell编程系列16--文本处理三剑客之awk模式匹配的两种方法

awk的工作模式

第一种模式匹配:RegExp

第二种模式匹配:关系运算匹配

用法格式对照表

语法格式    含义
RegExp 按正则表达式匹配
关系运算 按关系运算匹配

awk模式匹配用法总结:
第一种方法:RegExp
第二种方法:运算符匹配 、RegExp
匹配/etc/passwd文件行中含有root字符串的所有行
awk 'BEGIN{FS=":"}/root/{print $0}' passwd
匹配/etc/passwd文件行中以nginx开头的所有行
awk '/^nginx/{print $0}' passwd 、运算符匹配
关系运算符匹配:
< 小于
> 大于
<= 小于等于
>= 大于等于
== 等于
!= 不等于
~ 匹配正则表达式
!~ 不匹配正则表达式 ()、以:为分隔符,匹配/etc/passwd文件中第3个字段小于50的所有行信息
awk 'BEGIN{FS=":"}$3<50{print $0}' passwd ()、以:为分隔符,匹配/etc/passwd文件中第3个字段大于50的所有行信息
awk 'BEGIN{FS=":"}$3>50{print $0}' passwd ()、以:为分隔符,匹配/etc/passwd文件中第7个字段为/bin/bash的所有行信息
awk 'BEGIN{FS=":"}$7=="/bin/bash"{print $0}' passwd ()、以:为分隔符,匹配/etc/passwd文件中第7个字段不为/bin/bash的所有行信息
awk 'BEGIN{FS=":"}$7!="/bin/bash"{print $0}' passwd ()、以:为分隔符,匹配/etc/passwd文件中第3个字段包含3个数字以上的所有行信息
awk 'BEGIN{FS=":"}$3 ~ /[0-9]{3,}/{print $0}' passwd 布尔运算符匹配:
|| 或
&& 与
! 非 ()、以:为分隔符,匹配/etc/passwd文件中包含ftp或mail的所有行信息
awk 'BEGIN{FS=":"}$1=="ftp" || $1=="mail"{print $0}' passwd
()、以:为分隔符,匹配/etc/passwd文件中第3个字段小于50并且第4个字段大于50的所有行信息
awk 'BEGIN{FS=":"}$3<50 && $4>50{print $0}' passwd # 模式匹配
# 没有使用 /RegExp/ 匹配模式的时候处理所有的行,使用了匹配模式就只处理匹配到的行
[root@localhost shell]# awk 'BEGIN{FS=":"}/^nginx/{print $0}' passwd
nginx:x:::Nginx web server:/var/lib/nginx:/sbin/nologin # 关系运算符,uid 等于1的行
[root@localhost shell]# awk 'BEGIN{FS=":"}$3==1{print $0}' passwd
bin:x:::bin:/bin:/sbin/nologin
[root@localhost shell]# awk 'BEGIN{FS=":"}$7=="/bin/bash"{print $0}' passwd
root:x:::root:/root:/bin/bash
ajie:x:::ajie:/home/ajie:/bin/bash
deploy:x::::/home/deploy:/bin/bash # 匹配uid为3位及以上的行
[root@localhost shell]# awk 'BEGIN{FS=":"}$3~/[0-9]{3,}/{print $0}' passwd
systemd-network:x:::systemd Network Management:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
ajie:x:::ajie:/home/ajie:/bin/bash
chrony:x::::/var/lib/chrony:/sbin/nologin
deploy:x::::/home/deploy:/bin/bash
nginx:x:::Nginx web server:/var/lib/nginx:/sbin/nologin # 正则匹配nginx开头的行
[root@localhost shell]# awk 'BEGIN{FS=":"}$1~/^nginx/{print $0}' passwd
nginx:x:::Nginx web server:/var/lib/nginx:/sbin/nologin # 匹配到 /sbin/nologin 的行,注意转义
[root@localhost shell]# awk 'BEGIN{FS=":"}$0~/\/sbin\/nologin/{print $0}' passwd
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin
systemd-network:x:::systemd Network Management:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
chrony:x::::/var/lib/chrony:/sbin/nologin
nginx:x:::Nginx web server:/var/lib/nginx:/sbin/nologin # 没有匹配到/sbin/nologin 的行
[root@localhost shell]# awk 'BEGIN{FS=":"}$0!~/\/sbin\/nologin/{print $0}' passwd
root:x:::root:/root:/bin/bash
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
ajie:x:::ajie:/home/ajie:/bin/bash
deploy:x::::/home/deploy:/bin/bash # 运算和模式匹配混用,找出 uid 小于50,且bash为 /bin/bash 的行
[root@localhost shell]# awk 'BEGIN{FS=":"}$3<50 && $7~/\/bin\/bash/ {print $0}' passwd
root:x:::root:/root:/bin/bash

shell编程系列16--文本处理三剑客之awk模式匹配的两种方法的更多相关文章

  1. shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句

    shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句条件语句 if(条件表达式) 动作1 else if(条件表达式) 动作2 else 动 ...

  2. shell编程系列15--文本处理三剑客之awk格式化输出printf

    shell编程系列15--文本处理三剑客之awk格式化输出printf printf的格式说明符 格式符 含义 %s 打印字符串 %d 打印十进制数 %f 打印一个浮点数 %x 打印十六进制数 %o ...

  3. shell编程系列14--文本处理三剑客之awk的概述及常用方法总结

    shell编程系列14--文本处理三剑客之awk的概述及常用方法总结 awk是一个文本处理工具,通常用于处理数据并生成结果报告 awk的命名是它的创始人 Alfred Aho.Peter Weinbe ...

  4. shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计

    shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计 shell中的数组的用法: shell数组中的下标是从0开始的 array=("Allen" & ...

  5. shell编程系列20--文本处理三剑客之awk常用选项

    shell编程系列20--文本处理三剑客之awk常用选项 awk选项总结 选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号 [root@localhost s ...

  6. shell编程系列19--文本处理三剑客之awk中的字符串函数

    shell编程系列19--文本处理三剑客之awk中的字符串函数 字符串函数对照表(上) 函数名 解释 函数返回值 length(str) 计算字符串长度 整数长度值 index(str1,str2) ...

  7. shell编程系列17--文本处理三剑客之awk动作中的表达式用法

    shell编程系列17--文本处理三剑客之awk动作中的表达式用法 awk动作表达式中的算数运算符 awk动作中的表达式用法总结: 运算符 含义 + 加 - 减 * 乘 / 除 % 模 ^或** 乘方 ...

  8. shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容

    shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容 删除命令对照表 命令 含义 1d 删除第一行内容 ,10d 删除1行到10行的内容 ,+5d 删除10行到16行的内容 /p ...

  9. shell编程系列12--文本处理三剑客之sed利用sed修改文件内容

    shell编程系列12--文本处理三剑客之sed利用sed修改文件内容 修改命令对照表 编辑命令 1s/old/new/ 替换第1行内容old为new ,10s/old/new/ 替换第1行到10行的 ...

随机推荐

  1. 项目读取数据,一直出现 Closing connections idle longer than 30 SECONDS,卡死现象

    项目读取数据,一直出现 Closing connections idle longer than 30 SECONDS,卡死现象. 我的是在读取oracle数据的时候出现这种错误. 可以参考这篇文章 ...

  2. [TypeScript] Optional Chaining with TypeScript 3.7

    TypeScript 3.7 adds support for optional chaining. This lesson shows you how to use it in your code ...

  3. php自定义函数之变量作用域

    我们通过前面的章节函数定义部份的学习我们知道了几个不同的规矩: 函数定义时后括号里面接的变量是形式上的参数(形参),与函数体外的变量没有任何关系.仅仅是在函数内部执行大理石量具哪家好 函数内声明的变量 ...

  4. Kubernetes 学习5 kubernetes资源清单定义入门

    一.kubernetes是有一个restful风格的 API,把各种操作对象都一律当做资源来管理.并且可通过标准的HTTP请求的方法 GET,PUT,DELETE,POST,等方法来完成操作,不过是通 ...

  5. (尚016)Vue指令(11个自带指令+自定义指令)

    1.Vue常用指令 1)v:text:更新元素的 textContent 2)v-html:更新元素的 innerHTML 3)v-if:如果为true,当前标签才会输出到页面 4)v-else:如果 ...

  6. cube.js 学习(九)cube 的pre-aggregation

    我们可以使用cube的pre-aggregation 加速数据的查询,以下为一张来自官方的pre-aggregation 架构 参考架构图 pre-aggregation schema preAggr ...

  7. service 与 log日志

    service 初始化执行环境变量PATH和TERM PATH=/sbin:/usr/sbin:/bin:/usr/bin TERM,为显示外设的值,一般为xterm 执行/etc/init.d/目录 ...

  8. 想学习找不到好的博客?看这里>>

    想学习找不到好的博客?看这里>> (ps:内容 + 作者) 基础数论知识整理--gyh 进阶数论知识整理--又是gyh 关于SPFA--lyj(终于不是gyh) 证明二次探测定理-Line ...

  9. AtCoder Grand Contest 039 题解

    传送门 \(A\) 首先只有一串的情况下,遇到相同的肯定是改后面那一个最优,然后两串的话可能要分奇偶讨论一下 //quming #include<bits/stdc++.h> #defin ...

  10. OpenStack RPC框架解析

    1  消息队列Rabbitmq介绍 Rabbitmq的整体架构图 (1)Rabbitmq Server:中间那部分就是Rabbitmq Server,也叫broken server,主要是负责消息的传 ...