Linux常用命令——awk

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用命令——awk相关的知识,希望对你有一定的参考价值。

awk  一种编程语言

语法格式:awk 【option】‘pattern{action}‘【file】... awk [选项] ‘条件{动作}‘ [文件] ...
注意:awk 命令及后面的选项和文件里,每个元素之间都要至少要有一个空格
选项说明:

参数选项 解释说明
-F 指定字符安分隔符
-v 定义或修改一个 awk 内部的变量
$ 取、引用
$1 第一个列
$0 整行
$NF 最后一行
$(NF-1) 倒数第二行
RS 每个记录读入的时候的分隔符(类似于换行符 )
NR 行号,记录的数
ORS 输出时候的分隔符

关系运算符

运算符 含义 示例
< 小于 x < y
<= 小于等于 x <= y
== 等于 x == y
!= 不等于 x != y
>= 小于 x < y
< 大于等于 x >= y
> 大于 x > y
~ 与正则表达式匹配 x~/y/
!~ 与正则表达式不匹配 x!~y

案例一:
awk 环境简介
技术分享图片
案例二:
awk执行过程:

  1. awk 读入第一行内容
  2. 判断是否符合模式中的条件(如:NR>=2)
    a. 如果匹配则执行对应的动作(如:{print $0})
    b. 如果不匹配条件,继续读取下一行
  3. 继续下一行
  4. 重复过程 1-3,知道读取到最后一行(EOF:end of file)

    关于记录的简单说明:

  5. 大象放冰箱分几步?打开冰箱门,把大象放进去,关闭冰箱门。
  6. 对使用 NR、NF、$数字,配合调试你的 awk 命令。
  7. NR 存放着每个记录的号(行号)读取新行时候会自动 +1
  8. RS 是记录的分隔符,简单理解就是可以指定每个记录的结尾标志。
  9. 用 RS 代替
  10. RS 作用就是表示一个记录的结束
  11. FS 标志着每个区域的结束

    awk 的基本结构
    awk BEGIN{coms} /pattern/{coms} END{coms}
    开始模块,/找谁/{干啥},结束模块

  12. BEGIN 和END 模块只能有一个,BEGIN{}BEGIN{} 或者 END{}END{}
  13. 找谁干啥模块,可以有多个(例如:NR==2{print $1} NR==5{print $0})
    案例三:
    参数 RS,NR 举例
    技术分享图片
    技术分享图片
    说明:RS 为空值时,在行手打印输出记录号,并打印出每一行 $0 的内容
    正则表达式简单举例
    技术分享图片
    注意:$1~ 表示匹配第一列(第一个区域),o{1,2} 表示条件有一个或两个 o,{print NR,$1,NF} 表示打印 行号,第一列,最后一列
    案例四:
    使用 awk 取出对应的端口号、
    技术分享图片
    统计文件里面的空行数量
    技术分享图片
    new 文件里面,以空格为分隔符,区域 3 大于 15,有多少行
    技术分享图片
    技术分享图片
    技术分享图片
    使用 awk 实现 1 加到 100 的值
    技术分享图片

以上是关于Linux常用命令——awk的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用命令之awk

linux 查日志神器 - awk 相关常用命令

linux 查日志神器 - awk 相关常用命令

linux 查日志神器 - awk 相关常用命令

Linux常用基本命令:三剑客命令之-awk格式化动作

常用linux命令