我们将逐步揭开awk函数的神秘面纱。在本节中,我们将介绍awk内置变量的概念。在awk中可以使用两种类型的变量,它们是:user-defined用户定义变量和内置变量。我们将逐步揭开awk功能的神秘面纱,在本节中,我们将介绍awk内置变量的概念。在awk中可以使用两种类型的变量,它们是:user-defined用户定义变量和内置变量。awk内置变量已经有了预定义的值,但我们也可以仔细修改这些值。awk内置变量包括:FILENAME:当前输入文件名NR:当前输入行号(指输入第1、2、3...等行)NF:当前输入行的字段号OFS:输出字段分隔符FS:输入字段分隔符ORS:输出记录分隔符RS:输入记录分隔符要读取当前输入文件的名称,可以使用FILENAME内置变量,如下所示:$awk'{printFILENAME}'~/domains.txt你会看到每一行都会输出一次文件名,那是你使用FILENAME内置变量时awk的默认行为。我们可以使用NR来计算输入文件中的行数(记录),记住:它也计算空行,我们将在下面的示例中看到。输出文件内容当我们用cat命令查看文件domains.txt时,会发现它有14行文本和2个空行:$cat~/domains.txtawk统计行数:$awk'END{print"Numberofrecordsinfileis:",NR}'~/domains.txtawk统计文件中的字段数:$awk'{"Record:",NR,"has",NF,"fields";}'~/names.txtFS内置变量:您也可以使用FS内置变量指定输入文件分隔符,它定义了awk如何将输入行划分为字段。FS的默认值是“空格”和“制表符”,但我们也可以将FS值修改为任意字符,让awk根据情况分割输入行。有两种方法可以做到这一点:第一种方法是使用FS内置变量;第二种方法是使用awk的-F选项。查看Linux系统上的/etc/passwd文件。这个文件中的字段是用冒号(:)分隔的,所以当我们要过滤掉某些字段时,可以指定冒号(:)作为新输入的字段分隔符,awk过滤密码文件中的字段。我们可以使用-F选项,如下:$awk-F':''{print$1,$4;}'/etc/passwd另外,我们还可以使用FS内置变量,如下:$awk'开始{FS=":";}{打印$1,$4;}'/etc/passwdUseOFSbuilt-invariables:使用OFSbuilt-invariables来指定输出的字段分隔符,它会定义如何使用指定的字符来分隔输出字段使用awk输出的分隔符??:$awk-F':''BEGIN{OFS="==>";}{print$1,$4;}'/etc/passwd在本节中,我们学习了使用具有预定义值的awk内置变量的概念。但是我们也可以修改这些值,尽管不建议这样做,除非你知道自己在做什么并且完全理解(这些变量值)。之后,我们将继续学习如何在awk命令操作中使用shell变量,敬请期待。
