当前位置: 首页 > 科技观察

awk系列:如何使用awk语言编写脚本

时间:2023-03-13 12:44:05 科技观察

从awk系列开始到第12部分,我们在命令行或脚本文件中编写了一些简短的awk命令和程序。然而,awk和shell一样,是一种解释型语言。通过从开始到现在的一系列学习,你现在可以写出可执行的awk脚本了。与编写shell脚本类似,awk脚本以以下行开头:#!/path/to/awk/utility-f例如,在我的系统上,awk实用程序安装在/user/bin/awk目录中,所以我的awk脚本开始的内容如下:#!/usr/bin/awk-f上面一行的解释如下:#!,叫做Shebang,表示使用哪个解释器来执行脚本/usr中的命令/bin/awk,即interpreter-f,解释器选项,用于指定要读取的程序文件话虽如此,现在从下面这个简单的例子开始,让我们深入研究一些可执行的awk脚本。使用您喜欢的编辑器创建一个新文件,如下所示:$viscript.awk并将以下代码粘贴到该文件中:#!/usr/bin/awk-fBEGIN{printf"%s\n","Writingmyfirstawkexecutablescript!"}保存文件并退出,然后执行以下命令使脚本可执行:$chmod+xscript.awk然后,执行它:$./script.awk输出示例:Writingmyfirstawkexecutablescript!严格的程序员肯定会问:“注解呢?”。是的,您可以在awk脚本中包含注释。在代码中写注释是一种很好的编程习惯。这有助于其他程序员阅读您的代码并了解程序文件或脚本各部分的功能。所以,你可以像这样在脚本中添加注释:#!/usr/bin/awk-f#Thisisanexampleanexamplehowtowritecommentsinawk#UsethespecialmodeBEGINtooutputasentenceBEGIN{printf"%s\n","Writingmyfirstawkexecutablescript!"}下面我们来看一个读取文件的例子。我们要从账户文件/etc/passwd中找到一个名为aaronkilik的用户,然后像这样打印用户名、用户ID、用户GID(LCTT翻译注解:组ID):下面是我们脚本文件的内容,second.awk的文件名。#!/usr/bin/awk-f#使用BEGIN指定字符设置FS内置变量BEGIN{FS=":"}#搜索用户名aaronkilik并输出账户详情/aaronkilik/{print"Username:",$1,"UserID:",$3,"UserGID:",$4}保存文件并退出,使脚本可执行,然后像这样执行它:$chmod+xsecond.awk$./second.awk/etc/passwd示例输出:Username:aaronkilikUserID:1000UserGID:1000在下面的最后一个例子中,我们将使用dowhile语句来打印数字0-10:下面是名为do.awk的脚本文件的内容。#!/usr/bin/awk-f#printingfrom0-10usingadwhilestatement#dwhilestatementBEGIN{#initializeacounterx=0do{printx;x+=1;}while(x<=10)}保存文件后,像以前一样使脚本可执行。然后,运行它:$chmod+xdo.awk$./do.awkoutputsample012345678910总结我们已经到了这个精彩的awk系列的***,我希望你从整个13章中学到了很多,把这些服务作为awk编程语言的入门指南。正如我在开头提到的,awk是一种完整的文本处理语言,因此您可以学习awk编程语言的许多其他方面,例如环境变量、数组、函数(内置或用户定义)等。关于awk编程还有其他需要学习和掌握的东西,因此在本文的最后,我提供了一些重要的在线资源的链接,您可以使用这些资源来扩展您的awk编程技能。但这不是必须的,你也可以看一些关于awk的书。如果您有任何想法或问题想要分享,请在下方发表评论。记得持续关注我们,会有更多精彩内容。