awk的语法

awk 参数 处理规则 操作对象

参数

参数-F

参数 -F :指定本文分隔符(默认以空格作为分隔符)awk -F'/' '{print $NF}' 2.txt :用/作为分隔符,打印最后一列字段# 案例:打印系统所有用户的解析器:冒号作为分隔符,最后一个字段就是解析器awk -F: '{print $NF}' /etc/passwd

awk的生命周期

grep、sed、awk都是读一行处理一行,直到处理完成。
1.接收一行作为输入
2.把刚刚读入进来的文本进行分解
3.使用处理规则处理文本
4.输出一行,赋值给$0($0代表当前行),直到处理完成
5.把处理完成之后的所有的数据交给END{}来再次处理

awk当中的预定义变量

$0 :代表当前行 awk  '{print $0 "---"}' 2.txt :打印文件内容,每一行就在后面加---$n : 代表分割后的第n列字段awk -F/ '{print $1}' 2.txt :打印文件内容:用/分割后的第1列字段    NF :记录每一行用分隔符后的字段数量awk -F/ '{print NF}' 2.txt :NF打印字段数量awk -F: '{print $NF}' /etc/passwd :$NF打印最后一列字段NR :记录行号awk -F/ '{print NR}' 2.txtFS :指定文本内容的分隔符(默认空格);自定义变量的优先级要高于-F参数awk -F/ 'BEGIN{OFS="--"}{print $NF,$1}' 2.txtawk -F/ 'BEGIN{OFS="--"}{print $1,$2,$3}' 2.txt

awk当中处理规则的执行流程

以下至少有一个,最多有四个。执行流程从上到下。BEGING : 定义变量
// : 正则,匹配
{} : 处理文本
END{} :打印之前统一处理一遍

awk中的函数

print : 打印(前面举了很多例子了)
printf :格式化打印,给个双引号awk -F/ 'BEGIN{OFS="|"}{printf"|%-10s|%-10s|\n", $1,$2}' 2.txt%s : 字符串%d : 数字- :左对齐+ :右对齐10 :至少占用10个字符

awk中的定位

1.正则表达式 :两个//中间的就是正则表达式awk -F/ '/^345/{print $0}' 2.txt# 忽略大小写怎么写?awk -F/ '/qew|QEW|QEw|QeW|qEW/{print $0}' 2.txt2.比较表达式 :比较的是本文内的内容;> : 大于< : 小于>= : 大于等于<= : 小于等于~  : 匹配正则!~ : 不匹配正则# 要求打印属组id大于属主id的所有行awk -F: '$4 > $3{print $0}' /etc/passwd# 结尾包含bash的所有行awk -F: '$NF ~ /bash/{print $0}' /etc/passwd# 结尾不包含bash的所有行awk -F: '$NF !~ /bash/{print $0}' /etc/passwd3.逻辑表达式: && : 逻辑与||  :逻辑或!   :逻辑非# 属主id加属组id大于2000并且相乘大于2000awk -F: '$3 + $4 > 2000 && $3 * $4 > 2000{print $0}' /etc/passwd# 属主id加属组id大于2000或者相乘大于2000awk -F: '$3 + $4 > 2000 || $3 * $4 > 2000{print $0}' /etc/passwd# 属主id加属组id不大于2000awk -F: '!($3 + $4 > 2000){print $0}' /etc/passwd4.算数表达式:+ :加- :减* :乘/ :除% :整除# 要求属组 + 属主的ID 大于 2000awk -F: '$3 + $4 > 2000{print $0}' /etc/passwd#:要求属组 * 属主的ID 大于 2000awk -F: '$3 * $4 > 2000{print $0}' /etc/passwd# 要求打印偶数行awk -F: 'NR % 2 == 0{print $0}' /etc/passwd# 要求打印奇数行awk -F: 'NR % 2 == 1{print $0}' /etc/passwd5.条件表达式:跟比较表达式相似,比较的是自定义的内容;== :等于> :大于< :小于>= :大于等于<= :小于等于# 要求打印第三行awk -F/ 'NR==1{print $0}' 2.txt6.范围表达式:# 打印root开头的行到ftp开头的行awk -F: '/^root/,/^ftp/{print $0}' /etc/passwd

流程控制

流程控制只存在循环之中。

if

# 如果行的第3列字段大于第4列字段,打印0,否则打印1。awk -F/ '{if($3>$4){print "0"}else{print "1"}}' 2.txt
# 每隔5行,打印一行横线awk -F: '{if(NR%5==0){print "----------------"}print $0}' /etc/passwd格式:   if(){} :单条件if(){}else{} :双条件if(){}else if(){}else{} :多条件

for

# 循环打印每行打印2次awk -F/ '{for(i=2;i>0;i--){print $0}}' 2.txt格式:     for(i="初始值";条件判断;游标){}

while

# 循环打印每行打印2次,每次后面加打印次数awk -F/ '{i=1; while(i<=2){print $0, i++}}' 2.txt格式:i="初始值"; while(条件判断){}

linux 三剑客 之 awk相关推荐

  1. linux三剑客之awk命令详解

    linux三剑客之awk命令详解 awk 是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件.数据排序.计算以及生成报表等等.awk工具主要用于格式化输出,可以用类似于处理表格的方式处理文 ...

  2. linux三个冒号加端口,不看绝对后悔的Linux三剑客之awk实战精讲

    一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel).处理的数据可以是 ...

  3. Linux三剑客之awk详解

    第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告. awk不仅仅是linux系统中的一个命令,而且是一种编程语言:它可以用来处理数据和生成报告(excel):处理 ...

  4. 利器 | 测试必会之 Linux 三剑客 ( grep / awk / sed )

    本文为霍格沃兹测试学院优秀学员课程学习系列笔记,想一起系统进阶的同学文末加群交流. Linux 给人的印象是黑乎乎的神秘窗口,文本操作和数据处理似乎没有 Windows 窗口界面直观方便.其实Linu ...

  5. 深入浅出linux三剑客之awk必杀技一例

    缘起:上完第三节培训课后,同学们群内讨论氛围相当的好,那么就再给大家一点惊喜,希望大家继续加油努力,达到你们的第一阶段薪水目标. 老男孩linux培训第三节课程课前第考试三题,问题如下: 3.请执行命 ...

  6. linux三剑客之awk必杀技一例   linux命令

    []:有框表示从最开始计算(小分隔符),否则从数据开始计算, 无[] +:加号则从最开始计算,否则从数据开始计算 [] +: 加号则从最开始计算,否则从数据最开始计算 请执行命令取出linux中eth ...

  7. Linux三剑客之awk最佳实践

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 知识点: 记录与字段 模式匹配:模式与动作 基本的awk执行过程 awk常用内置变量(预定义变量) awk数组 a ...

  8. awk 匹配_详解Linux三剑客之awk

    第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告. awk不仅仅是linux系统中的一个命令,而且是一种编程语言:它可以用来处理数据和生成报告(excel):处理 ...

  9. Linux三剑客之一 awk

    awk:是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言的最大功能取决于一个人所拥有的知识.awk命名:Alfred Aho Peter ...

  10. LINUX 三剑客之awk

    一 概述 AWK是一种处理文本文件的语言,是一个强大的文本分析工具.它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描.过滤.统计汇总工作数量,可以来自标准输入也可以是管道或文件 20世纪 ...

最新文章

  1. Hibernate映射关系
  2. Google将如何改变你观看电视的习惯
  3. 汇编中的LABEL详解
  4. forEach 与 map 的区别
  5. 关于欧拉工程的一道递推题
  6. 如何通俗理解拉格朗日对偶问题(part1)
  7. openSearch支持mysql版本_OpenSearch 使用二三事-阿里云开发者社区
  8. QModelIndex——
  9. 八大排序算法思想介绍
  10. yolobile 道路损坏检测实战
  11. eclipse环境下基于已构建struts2项目整合spring+hibernate
  12. vue 设置div圆角,只设置上面两个圆角,下面两个还是正方形
  13. (三)空域图像增强:像素联系和模板运算
  14. bzoj-2286 消耗战【虚树+倍增lca+单调栈】
  15. Python学习笔记7——数据类型(中)
  16. poco linux,centos7.2 安装poco
  17. 房东违反房屋租赁合同会怎么进行赔偿
  18. 转行学习java自学好还是去培训学校学习好?系统学习路线推荐
  19. 使用远程工具远程连接linux(xshell,xftp,xmanager,xrdp)
  20. 使用PHP破解防盗链图片的一个简单方法

热门文章

  1. fluent软件模拟计算3D弯头中冲蚀现象
  2. 如何实现前端新手引导功能?
  3. 多功电子表是否采用计算机技术计量,浅谈电子式电能表应用的几点问题
  4. MaxCompute用量明细账单分析最佳实践
  5. 联想Y470装windows8 -- 两天装3遍的经验总结,供小白鼠使用
  6. draw.io在线画图站点
  7. 原生js实现拖动滑块验证
  8. Cisco AP查看及修改发射功率Tx power
  9. 计算机维修活动新闻稿,【自主维修】“自主维修”我们在行动——记热力作业部全力开展自主维修...
  10. python readfile 管道_使用win32的正确方法是什么文件.ReadFile从管道中获取输出?