美文网首页Linux系统awkShell和命令
awk基础02-变量-分隔符-数组

awk基础02-变量-分隔符-数组

作者: Surpassme | 来源:发表于2018-09-14 21:37 被阅读11次

    对任意一门语言都会有变量,在awk中变量分为内置变量自定义变量

内置变量:就是预先在awk中定义好的,用户可以直接使用
自定义变量:这种变量为用户自己定义的变量,需要先定义后再使用。

内置变量

awk主要的内置变量如下所示:

变量 解释 默认值
$0 代表当前整行记录
$1~$n 代表当前一行的第n列,由输入分隔符决定 默认由空格进行分隔
FS 输入列分隔符 默认为空格
RS 输入行分隔符 默认为换行符
ORS 输出行分隔符 默认为换行符
OFS 输出列分隔符 默认为空格
NF 当前行总列数
NR 当前处理的文本行号
FNR 各文件自己的行号
FILENAME 当前文件名
ARGC 命令行的参数个数
ARGV 命令行中数组的参数
CONVFMT 设置数字的格式 默认%.6g
OFMT 输出数字的格式 默认%.6g

用法示例

1、打印行号

01打印行号.jpg

2、awk默认以换行符做为新的一行的开始,如果不想采用默认的换行符,则可以自己指定行分隔符

02指定输入行分隔符.jpg

在该示例中,使用 : 作为换行符,则每次遇到:则新起一行

3、awk在输出显示时也是默认以换行符作为新的一行,如果在输出不采用默认的换行符,则也可指定输出行分隔符

03指定输出行分隔符.jpg

在该示例中,采用默认的换行符,与我们的预期是一致的,但如果指定输出行换行符,则以指定的换行符做为换行的标志,这个仅仅是awk能够识别,因此我们看到的输出在一行上面,而在awk里面却是两行。

4、打印总列数和行号

04打印总列数和行号.jpg

5、如果一次输入有多个文件,想打印各个文件自己的信息,如何处理?来看示例:

05打印当前文件名和各文件自己的行号.jpg

自定义变量

    内置变量个数是有限的,不能满足现实中不同的使用场景,因此在实际应用时,还需要定义自己的变量,俗称自定义变量。在awk中自定义变量的方法主要有两种方式:

  • 方式一:通过选项-v
awk -v variableName=value
  • 方式二:在模式中定义
awk 'BEGIN {variableName=value}'

用法示例

06自定义变量.jpg

分隔符

  • 问题一:awk默认是逐行处理文本,在将文本读入后,只想输出某些用户想要的信息,怎么处理?
  • 问题二:在匹配到相应的数据后,要对输出进行格式化处理,如两个字段问采用%%连接,怎么处理?

    针对以下两个问题,我们引入分隔符概念。在awk中,分隔符分为两种:输入分隔符输出分隔符

输入分隔符

    输入分隔符,全称field separator,简写FS。针对即将读入到awk中所采用的分隔符,默认为空格;当awk逐行处理文本文件的时候,以输入分隔符为参考对每行进行切割并分隔为多列。如果文本文件中没有空格,则可以自行指定分隔符。

  • 通过选项 -F 指定输入分隔符
07分隔符-F.jpg
  • 通过 -v 设置内部变量 FS,指定输入分隔符
08分隔符-FS.jpg

输出分隔符

    输出分隔符,全称output field separator,简写OFS。针对经过awk处理后,在输出的时候采用的分隔符加以格式化,默认为空格。如果在输出的结果不采用默认的分隔符,则需要指定分隔符。

  • 通过 -v 设置内部变量 OFS,指定输入分隔符
09分隔符-OFS.jpg
  • 使用print输出
10分隔符-print.jpg

数组

    如果你了解过任何一门编程语言,则很容易明白什么是数组。通过情况下,数组是代表同一种类型数据的集合,常用的有一维、二维和多维数组等等。在使用的时候通过数组下标去访问。大部分的编程语言中下标是从0开始,而awk中数组下标是从1开始。在使用数组时需要注意的事项如下所示:

  • 数组的允许赋空值
  • 如果引用的数组值不存在,则系统默认会创建并赋为空值
  • awk中数组的下标可以是数字,也可以是任意字符
  • 判断元素是否属于数组需要使用(元素 in 数组)
  • 如果引用的元素不存在,进行数值运算时会默认当0进行处理

用法示例

11数组.jpg

相关文章

  • awk基础02-变量-分隔符-数组

        对任意一门语言都会有变量,在awk中变量分为内置变量和自定义变量。 内置变量:就是预先在awk中定义好的,...

  • Linux三剑客(awk-3)-awk变量

    本文取自朱双印——awk从放弃到入门(3):awk变量 对于awk来说,变量又分为内置变量和自定义变量,输入分隔符...

  • awk+sed+vim等技巧

    awk技巧 awk的内置变量: FS:(Input Field Separator)表示awk所认知的分隔符 OF...

  • 19-三剑客之awk补充

    创建环境: 一、awk的参数: -F 指定分隔符-v 修改或创建awk内置变量 二、内置变量 三、过滤(awk中什...

  • awk笔记

    AWK 简介基本概念基本命令形式命令参数-f 指定 awk 程序文件-F 指定分隔符设置 RS 变量-v 变量赋值...

  • awk小结

    awk 参考 AWK简明教程|coolshell 文本 输出第1列与第4列 格式化 过滤记录 内建变量 指定分隔符...

  • 20170904 awk

    awk介绍awk变量printf命令:实现格式化输出操作符awk patternawk actionawk数组aw...

  • 笔记-awk

    1.Awk基础介绍 2.awk语法格式 2.Awk工作原理 3.Awk内部变量 4.Awk格式输出 5.Awk模式...

  • Day64-shell编程_正则表达式_awk

    1.Awk基础介绍 2.Awk工作原理 3.Awk内部变量 4.Awk格式输出 5.Awk模式匹配 5.1符号 ...

  • AWK是门大学问(中)

    刘小泽写于19.4.30继续探索AWK 内置变量 FS-Field Separator 默认的分隔符是空格(但是数...

网友评论

    本文标题:awk基础02-变量-分隔符-数组

    本文链接:https://www.haomeiwen.com/subject/oruagftx.html