Blog.041 Shell 编程 awk 命令详解

本章目录

 

 

 

 

1. awk 命令概述
  1.1 awk 常见用法
  1.2 awk 工作原理
  1.3 awk 命令格式
2. 用法实例
  2.1 按行输出文本
  2.2 按字段输出文本
  2.3 通过管道符号和双引号调用shell命令
  2.4 组合使用

 

 

 

 

1. awk 命令概述

    在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务。


  1.1 awk 常见用法

 

    sed 命令常用于一整行的处理,而 awk 比较倾向于将一行分成多个“字段”然后再进行处理,且默认情况下字段的分隔符为空格或 tab 键。

    awk 执行结果可以通过 print 的功能将字段数据打印显示。

    在使用 awk 命令的过程中,可以使用逻辑操作符:

  • “&&”表示“与”;
  • “||” 表示“或”;
  • “!”表示“非”。

    还可以进行简单的数学运算:

  • 如 +、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。


  1.2 awk 工作原理

 

    awk 借用 shell 中类似于位置变量的方法, 用 $1、$2、$3… 顺序地表示行(记录)中的不同字段。
    另外 awk 用 $0 表示整个行(记录)。
    不同的字段之间是通过指定的字符分隔。
    awk 默认的分隔符是空格
    awk 允许在命令行中用 “-F 分隔符” 的形式来指定分隔符。

 


  1.3 awk 命令格式

 

    命令行格式:

  • awk 选项 '模式或条件 {编辑指令}' 文件 1 文件 2 …

    #过滤并输出文件中符合条件的内容

  • awk -f 脚本文件 文件 1 文件 2 …

    #从脚本中调用编辑指令,过滤并输出内容

 

    awk 包含几个特殊的内建变量(可直接用)如下所示:

 

FS 指定每行文本的字段分隔符,默认为空格或制表位。
NF 当前处理的行的字段个数。
NR 当前处理的行的行号(序数)。
$0 当前处理的行的整行内容。
$n 当前处理行的第 n 个字段(第 n 列)。
FILENAME 被处理的文件名。
RS

“行“分割符,awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录; 
wak一次仅读入一条记录,以进行处理,预设值是” \n “


2. 用法实例

 


  2.1 按行输出文本

 

 

 

 

 

 


  2.2 按字段输出文本

 

 

 

 

 

 

 

  2.3 通过管道符号和双引号调用shell命令

 

 

 

  • 当 getline 左右无重定向符和或时,getline 作用于当前文件,读入当前文件的第一行给其后跟着的变量 var 或 $0,由于 awk 在处理 getline 之前已经读入了一行,所以 getline 得到的返回结果是隔行的;
  • 当 getline 左右有重定向符和或时,getline 则作用于定向输入文件,由于该文件是刚打开的,并没有被 AWK 读过,只是 getline 读入,那么 geiline 返回的是该文件的第一行,而不是隔一行。

 


  2.4 组合使用

 

 

 

 

 

 

 

 

-

 

posted @ 2021-08-05 12:21  洛洛你好  阅读(1605)  评论(0编辑  收藏  举报