Blog.041 Shell 编程 awk 命令详解

时间:2021-08-05
本文章向大家介绍Blog.041 Shell 编程 awk 命令详解,主要包括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 组合使用

-

原文地址:https://www.cnblogs.com/cityfell/p/15097049.html