网站搜索

如何使用 awk 编程语言编写脚本 - 第 13 部分


从 Awk 系列开始到第 12 部分,我们一直在命令行和 shell 脚本中分别编写小型 Awk 命令和程序。

然而,Awk 与 Shell 一样,也是一种解释性语言,因此,根据我们从本系列开始所了解的所有内容,您现在可以编写 Awk 可执行脚本。

与我们编写 shell 脚本的方式类似,Awk 脚本以以下行开头:

#! /path/to/awk/utility -f 

例如,在我的系统上,Awk 实用程序位于 /usr/bin/awk 中,因此,我将启动一个 Awk 脚本,如下所示:

#! /usr/bin/awk -f 

解释上面这行:

  1. #! – 称为 Shebang,它指定脚本中指令的解释器
  2. /usr/bin/awk – 是解释器
  3. -f – 解释器选项,用于读取程序文件

也就是说,现在让我们深入研究 Awk 可执行脚本的一些示例,我们可以从下面的简单脚本开始。使用您最喜欢的编辑器打开一个新文件,如下所示:

vi script.awk

并将以下代码粘贴到文件中:

#!/usr/bin/awk -f 
BEGIN { printf "%s\n","Writing my first Awk executable script!" }

保存文件并退出,然后通过发出以下命令使脚本可执行:

chmod +x script.awk

此后,运行它:

./script.awk
样本输出
Writing my first Awk executable script!

挑剔的程序员一定会问,“注释在哪里?”,是的,您也可以在 Awk 脚本中包含注释。在代码中编写注释始终是一种良好的编程习惯。

它可以帮助其他程序员查看您的代码,以了解您在脚本或程序文件的每个部分中试图实现的目标。

因此,您可以在上面的脚本中添加注释,如下所示。

#!/usr/bin/awk -f 

#This is how to write a comment in Awk
#using the BEGIN special pattern to print a sentence 

BEGIN { printf "%s\n","Writing my first Awk executable script!" }

接下来,我们将看一个从文件读取输入的示例。我们要在帐户文件/etc/passwd中搜索名为aaronkilik的系统用户,然后打印用户名、用户ID和用户GID如下:

下面是我们名为 second.awk 的脚本的内容。

#! /usr/bin/awk -f 

#use BEGIN sepecial character to set FS built-in variable
BEGIN { FS=":" }

#search for username: aaronkilik and print account details 
/aaronkilik/ { print "Username :",$1,"User ID :",$3,"User GID :",$4 }

保存文件并退出,使脚本可执行并执行如下:

chmod +x second.awk
./second.awk /etc/passwd
样本输出
Username : aaronkilik User ID : 1000 User GID : 1000

在下面的最后一个例子中,我们将使用do while语句来打印0-10之间的数字:

下面是我们名为 do.awk 的脚本的内容。

#! /usr/bin/awk -f 

#printing from 0-10 using a do while statement 
#do while statement 
BEGIN {
#initialize a counter
x=0

do {
    print x;
    x+=1;
}
while(x<=10)
}

保存文件后,像我们之前所做的那样使脚本可执行。然后,运行它:

chmod +x do.awk
./do.awk
样本输出
0
1
2
3
4
5
6
7
8
9
10

概括

我们已经结束了这个有趣的 Awk 系列,作为 Awk 编程语言的介绍,我希望您从所有 13 部分中学到了很多东西。

正如我从一开始就提到的,Awk 是一种完整的文本处理语言,因此,您可以了解 Awk 编程语言的更多其他方面,例如环境变量、数组、函数(内置和用户定义)等。

Awk 编程还有其他部分需要学习和掌握,因此,下面我提供了一些重要在线资源的链接,您可以使用这些资源来扩展您的 Awk 编程技能,这些不一定是您需要的全部,您还可以查看寻找有用的 Awk 编程书籍。

参考链接:GNU Awk 用户指南和 AWK 语言编程

对于您想要分享的任何想法或问题,请使用下面的评论表。请记住始终与Howtoing保持联系以获取更多精彩系列。