什么是AWK NF?如何使用?用法详细指南

2021年11月9日22:10:33 发表评论 1,984 次浏览

AWK NF用法指南:AWK 脚本语言也有一系列内置的特殊变量来服务于一些预定义的目的。一个这样的内置变量是“NF”,它有自己的预定义功能。本文将通过在 Ubuntu 20.04 中演示一些相关示例来探索这个内置 AWK 变量的用途。如何使用AWK NF?下面有几个详细的示例。

Ubuntu 20.04 中的 AWK NF:

“NF”AWK 变量用于打印任何提供的文件的所有行中的字段数。这个内置变量逐行遍历文件的所有行,并分别打印每一行的字段数。要很好地理解此功能,你必须通读下面讨论的示例。

演示在 Ubuntu 20.04 中使用 AWK NF 的示例:

以下四个示例旨在以一种非常易于理解的方式教你使用 AWK NF。所有这些示例都是使用 Ubuntu 20.04 操作系统实现的。

AWK NF用法示例 # 1:打印文本文件每一行的字段数:

在这个例子中,我们想打印 Ubuntu 20.04 中文本文件的每行或每行或记录的字段或列数。为了向你展示这样做的方法,我们创建了下图所示的文本文件。该文本文件包含来自巴基斯坦五个不同城市的每公斤苹果的比率。

什么是AWK NF?如何使用?用法详细指南
AWK NF用法指南

创建此示例文本文件后,我们执行以下命令以在终端中打印此文本文件每一行的字段数:

$ awk ‘{print NF}’ AppleRates.txt

在这个命令中,我们有“awk”关键字,表明我们正在运行一个 AWK 命令,后跟“print NF”语句,该语句将简单地遍历目标文本文件的每一行,并将分别打印每个字段的数量文本文件的行。最后,我们有该文本文件的名称(要计算其字段),在我们的例子中是“AppleRatest.txt”。

什么是AWK NF?如何使用?用法详细指南

由于我们的文本文件的所有五行的字段数完全相同,即 2,因此由于执行此命令,打印的数字与所有文本文件行的字段数相同。这可以从下图看出:

什么是AWK NF?如何使用?用法详细指南
AWK NF用法指南

示例#2:以可呈现的方式打印文本文件每一行的字段数:

如何使用AWK NF?通过显示文本文件每行的行号和字段数,也可以很好地呈现上面讨论的示例中显示的输出。此外,我们还可以使用我们选择的任何特殊字符将行号与字段数分开。我们将使用我们在第一个示例中使用的相同文本文件来向你展示这一点。但是,我们在这种情况下要执行的命令会略有不同,如下所示:

$ awk ‘{print NR, “---”, NF}’ AppleRates.txt

在这个命令中,我们引入了内置的 AWK 变量“NR”,它会简单地打印目标文本文件所有行的行号。此外,我们使用了三个破折号“—”作为特殊字符来将行号与我们提供的文本文件的字段数分开。

什么是AWK NF?如何使用?用法详细指南

下图显示了对同一文本文件稍加修改的输出:

什么是AWK NF?如何使用?用法详细指南

AWK NF用法示例#3:打印文本文件每一行的第一个和最后一个字段:

AWK NF用法指南:除了只计算提供的文本文件所有行的字段数外,AWK 的“NF”特殊变量还可用于从提供的文本文件中提取最后一个字段的实际值。同样,我们使用了与前两个示例中使用的文本文件完全相同的文本文件。但是,在此示例中,我们希望打印文本文件的第一个和最后一个字段的实际值。为此,我们执行了以下命令:

$ awk ‘{print $1, $NF}’ AppleRates.txt

在此命令中,“awk”关键字后跟“print $1, $NF”语句。“$1”特殊变量已用于打印我们提供的文本文件的第一个字段或第一列的值,而“$NF”AWK 变量已用于打印最后一个字段或最后一列的值我们的目标文本文件。这里需要注意,当我们原样使用“NF”AWK变量时,它是用来统计每一行的字段数;但是,当它与美元“$”符号一起使用时,它将简单地从提供的文本文件的最后一个字段中提取实际值。命令的其余部分与前两个示例中使用的命令大致相同。

什么是AWK NF?如何使用?用法详细指南

在下面显示的输出中,你可以看到我们提供的文本文件的第一个和最后一个字段中的实际值已打印在终端上。你可以看到这个输出与“cat”命令的输出非常相似,仅仅是因为我们提供的文本文件中只有两个字段;因此,在某种程度上,作为执行上述命令的结果,我们整个文本文件的内容都打印在终端上。

什么是AWK NF?如何使用?用法详细指南
AWK NF用法指南

AWK NF用法示例 #4:将文本文件中缺少字段的记录分开:

有时,文本文件中的某些记录缺少某些字段,你可能希望将这些记录与各个方面都完整的记录分开。这也可以通过使用“NF”AWK 变量来完成。为此,我们创建了一个名为“ExamMarks.txt”的文本文件,其中包含五名不同学生在三项不同考试中的考试成绩及其姓名。但是,第三次考试,有部分学生因成绩缺席而缺席。该文本文件如下:

什么是AWK NF?如何使用?用法详细指南

为了区分缺少字段的记录和具有完整字段的记录,我们将执行如下所示的命令:

$ awk ‘{print NR, “--->”, NF}’ ExamMarks.txt
什么是AWK NF?如何使用?用法详细指南

此命令与我们在第二个示例中使用的命令相同。但是,从下图中显示的此命令的输出中,你可以看到第一条和第四条记录是完整的,而第二条、第三条和第五条记录包含缺失的字段。

什么是AWK NF?如何使用?用法详细指南
AWK NF用法示例

AWK NF用法指南总结

本文的目的是解释“NF”AWK 特殊变量的用法。如何使用AWK NF?我们首先简要讨论了这个变量是如何工作的,然后我们在四个不同的例子的帮助下很好地阐述了这个概念。一旦你很好地理解了所有共享示例,你将能够使用“NF”AWK 变量来计算字段总数并打印所提供文件的最后一个字段的实际值。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: