Linux shell四剑客之awk

本文详细介绍了Linux shell编程的四剑客——find、grep、sed和awk,重点讲解了awk的使用,包括其语法、选项、模式、动作、变量和运算符号,并提供了多个实战例子,帮助读者掌握awk在文本处理和报表生产中的应用。
摘要由CSDN通过智能技术生成

shell编程四剑客:find、grep、sed、awk
shell编程四剑客之find,主要用于查找Linux操作系统的某个文件/目录的路径;
shell编程四剑客之grep,抓取,主要用于过滤和匹配文件内容,以行为单位进行匹配;
shell编程四剑客之sed,流编辑器命令,用于文件的内容替换、追加、修改、删除等,类似vi编辑器,是一种非交互的编辑器;
shell编程四剑客之awk, 支持变量、功能函数、控制语句,主要用于对文本内容的过滤和匹配,比grep匹配的内容更加精确,更灵活进行匹配;

今天主介绍四剑客老大-------awk!
一、awk

awk能够进行文本处理和报表生产,经常用在linux日常处理的工作中

1、语法参数格式为:awk ‘pattern + {action}’ file

awk 选项 模式 动作 文件

2、语法详解

单引号时和shell命令区分开;

大括号{}表示一个命令分组;

pattern是要给过滤器,表示匹配pattern条件的行才进行action处理;

action是处理动作,常见动作为print

pattren和action可以只有其一,但不能都没有

3、选项

-F 指定输入时用到的字段分隔符

-v var=value:自定义变量

4、模式介绍
     1)、BEGIN{ statements } 。
      让用户指定在第一条输入记录被处理之前所发生的动作,通常可在这里设置全局变量
      在输入被读取之前,statements执行一次
     2)、END{ statements }
      让用户在最后一条输入记录被读取之后发生的动作
      当所有输入被读取完毕之后,statements执行一次
     3)、expression{ statements }
      关系表达式,可以用下面运算符表中的关系运算符进行操作,如%2>%1选择第二个字段比第一个字段长的行。
      每碰到一个是expression为真的输入行,statements执行一次,expression为真指的是其值非零或非空
     4)、/regular expression/ { statements }
      通配符的扩展集
      碰到这样一个输入行时,statements就执行:输入行含由一段字符串,而该字符串可以被regular expression匹配
     5)、compound pattern { statements }
      一个复合模式将表达式用&&(AND),(OR),!(NOT),以及括号组合起来;当compound pattern为真时,statements执行。
     6)、pattern1,pattern2 { statements }
      模式,模式,指定一个行的范围不能包括BEGIN和END模式
      一个范围模式匹配多个输入行,这些输入行从匹配pattern1的行开始,到匹配pattern2的行结束(包括这两行),对这其中的每一行执行statements

5、动作
    expression表达式,包括常量,变量,赋值,函数调用等等 。
    print expression-list
    printf(format,expression-list)
    if(expression)statements
    if (expression)statements else statements
    while (expression) statements
    for (expression in array)statements
    for (expression in array) statements
    do statements while (expression)
    break
    contnue

6、变量

$0所有内容,$1第一列, 2 第 二 列 , 2第二列, 2NF最后一列,$FN-1倒数第二列

各种变量如下:
    在这里插入图片描述
7、运算符号
在这里插入图片描述
命令语句实例:
1、awk ‘{print $0}’ /etc/passwd
2、打印uid在30~40范围内用户名:awk -F: ‘$3>=30&&$3<=40{print $3}’ /etc/passwd
3、打印第5-10行的行号和用户名: awk -F: ‘NR>=5&&NR<=10{print $1,NR}’ /etc/passwd
4、打印机奇偶数行:awk -F: ‘NR%21{print NR,$0}’ /etc/passwd
5、打印字段数大于5的行:awk -F: ‘NF>6{print $0}’ /etc/passwd
6、打印UID不等于GID的用户名: awk -F: ‘$3!=$4{print $0}’ /etc/passwd
7、打印**1~100以内的7的倍数和包含7的数:seq 1 100 | awk '$1~/7/||$1%7
0{print $1}’*
8、计算UID相加的总和;计算GID相加的总和: awk -F: ‘{uid+=$3;gid+=$4}END{print uid;print gid}’ /etc/passwd
9、找出普通用户和用户名并统计数量: awk -F: ‘{if($3>=500) sum+=1}END{print sum}’ /etc/passwd
10、uid分组标记为:0 admin,1-499 sysuser,500 + users:awk 'BEGIN{FS=":";OFS="\t";print “用户名\tUID\t权限”}{if($3==0)print $1,$3,“admin”;else if($3<500)print $1,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值