awk 系列Part10:如何使用 awk 内置变量

awk 系列:如何使用 awk 内置变量

咱们将逐渐揭开 awk 功能的神秘面纱,在本节中,咱们将介绍 awk 内置(built-in)变量的概念。你能够在 awk 中使用两种类型的变量,它们是:用户自定义(user-defined)变量(咱们在第八节中已经介绍了)和内置变量。html

awk 系列Part10:如何使用 awk 内置变量

awk 内置变量示例linux

awk 内置变量已经有预先定义的值了,但咱们也能够谨慎地修改这些值,awk 内置变量包括:git

  • FILENAME : 当前输入文件名称
  • NR : 当前输入行编号(是指输入行 1,2,3……等)
  • NF : 当前输入行的字段编号
  • OFS : 输出字段分隔符
  • FS : 输入字段分隔符
  • ORS : 输出记录分隔符
  • RS : 输入记录分隔符

让咱们继续演示一些使用上述 awk 内置变量的方法:github

想要读取当前输入文件的名称,你能够使用 FILENAME 内置变量,以下:shell

$ awk ' { print FILENAME } ' ~/domains.txt

awk 系列Part10:如何使用 awk 内置变量

awk FILENAME 变量dom

你会看到,每一行都会对应输出一次文件名,那是你使用 FILENAME 内置变量时 awk 默认的行为。ide

咱们能够使用 NR 来统计一个输入文件的行数(记录),谨记,它也会计算空行,正如咱们将要在下面的例子中看到的那样。学习

当咱们使用 cat 命令查看文件 domains.txt 时,会发现它有 14 行文本和 2 个空行:ui

$ cat ~/domains.txt

awk 系列Part10:如何使用 awk 内置变量

输出文件内容code

$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt

awk 系列Part10:如何使用 awk 内置变量

awk 统计行数

想要统计一条记录或一行中的字段数,咱们能够像下面那样使用 NR 内置变量:

$ cat ~/names.txt

awk 系列Part10:如何使用 awk 内置变量

列出文件内容

$ awk '{ "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

awk 系列Part10:如何使用 awk 内置变量

awk 统计文件中的字段数

接下来,你也能够使用 FS 内置变量指定一个输入文件分隔符,它会定义 awk 如何将输入行划分红字段。

FS 默认值为“空格”和“制表符”,但咱们也能将 FS 值修改成任何字符来让 awk 根据状况切分输入行。

有两种方法能够达到目的:

  • 第一种方法是使用 FS 内置变量
  • 第二种方法是使用 awk 的 -F 选项

来看 Linux 系统上的 /etc/passwd 文件,该文件中的各字段是使用 : 分隔的,所以,当咱们想要过滤出某些字段时,能够将 : 指定为新的输入字段分隔符,示例以下:

咱们能够使用 -F 选项,以下:

$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

awk 系列Part10:如何使用 awk 内置变量

awk 过滤密码文件中的各字段

此外,咱们也能够利用 FS 内置变量,以下:

$ awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

awk 系列Part10:如何使用 awk 内置变量

使用 awk 过滤文件中的各字段

使用 OFS 内置变量来指定一个用于输出的字段分隔符,它会定义如何使用指定的字符分隔输出字段,示例以下:

$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

awk 系列Part10:如何使用 awk 内置变量

向文件中的字段添加分隔符

在本节中,咱们已经学习了使用含有预约义值的 awk 内置变量的理念。但咱们也可以修改这些值,虽然并不推荐这样作,除非你明白本身在作什么,而且充分理解(这些变量值)。

此后,咱们将继续学习如何在 awk 命令操做中使用 shell 变量,因此,请继续关注咱们。


via: http://www.tecmint.com/awk-built-in-variables-examples/

做者:Aaron Kili
译者:ChrisLeeGit
校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关文章
相关标签/搜索