图片来自Wallhaven的420BongHits Linux中有一个命令功能强大到不能称为命令awk。它实际上是一种用于Linux中文本处理的脚本语言。 掌握它awk是一个长期的旅程,因为它有很多选项、语法和复杂的用法。当然,您可以转到其官方用户手册页面并查看它们。但是它的手册是一个超长的页面,不是吗?很少有人能一口气读完。 这就是为什么这篇文章会让你的生活更轻松。没有必要记住它的所有选项和语法。您只需要知道它可以做什么以及一些常见用法。 这篇文章,根据我自己的经验,将向你介绍awk在8个难度级别中使用所需的常用知识和最低知识。0。了解awk命令的结构 基本上,一切都将从一个awk关键字开始,然后是一个awk用单引号括起来的程序。最后,它是该awk命令将处理的文件的名称。 在单引号内,有两种类型的程序:模式和动作。模式用于搜索文件中的某些文本。一个动作,顾名思义,就是用来做一些操作的。 所以,有以下三种用途awk:1。只执行一个动作awk{action}文件名2。仅根据模式搜索文本awk模式文件名3。结合模式和动作的使用awk模式{action}文件名 如上所示,为了区分模式和动作,动作将用花括号括起来。 现在,我们已经有了基本的背景知识awk。让我们深入了解其用法的更多细节。1。直接运行Action 这是一个名为的文件yang。txt,它将作为本文的示例文件。它的内容是: 现在,让我们为它执行一个简单的awk操作: 如上例所示,我们可以使用该F选项来定义输入分隔符(在我们的例子中是:),默认情况下是空格。由于我们使用:分隔符,因此每行中有两个单词(或称为字段)。NUMBER语法是指定我们将使用哪个字段。 关于NUMBER语法,我们需要知道一些事情:它从而1不是开始0。(1是第一个字段,2是第二个字段,依此类推。)0代表整行的文本。NF代表最后一个字段。所以我们可以使用(NF1)倒数第二个,以此类推。2。添加开始和结束动作 BEGINandEND关键字在awk程序中有特殊用途。正如它们的名字所暗示的,我们可以在动作的开始和结束时添加一些额外的动作。 上面的示例在操作之前和之后打印了一些有用的信息{print0}。实际上,我们也可以在BEGINaction中定义输入分隔符,而不是使用F选项,这样可以让程序更简洁: 3。使用内置函数 里面有一些内置函数awk。我们可以直接在动作上使用它们。例如,要将所有字符转换为大写,我们可以使用toupper()如下函数: 所有内置函数的完整列表在官方手册中。4。在操作中使用IfElse语句 正如我所说,awk它是一种脚本语言,因为该ifelse语句是所有语言的必备条件,awk因此也支持它。 如果一行文本的第一个字段等于名称,则以下示例打印第二个字段。 我们还可以添加一个else语句: 5。在模式中使用正则表达式 现在,让我们继续讨论模式。令人awk惊奇的是它支持正则表达式,因此我们可以根据需要通过各种方式搜索文本。 基本上,我们可以将我们需要的正则表达式放入如下: 默认情况下,该模式将尝试匹配每一行的整个文本。如果我们想匹配一个特定的字段,只需在模式的开头添加它,不要忘记一个特殊的遵循awk。 如上所示,该模式1e仅匹配每一行的第一个字段。6。结合模式和行动 现在,是时候结合模式和行动了。没有什么特别的,只是通过用花括号括起来的动作来区分模式和动作: 注意模式和动作的顺序。对于上面的例子,如果我们先执行动作然后执行模式,结果将完全不同。7。编写可执行的awk脚本 掌握的目的awk不仅仅是写一些简单的一行命令。就是写Linux脚本。 awk现在,我们已经对countwords。awk。 现在,让我们执行它来计算上有多少单词yang。txt: 结论 awk是Linux中一种强大的脚本语言。这篇文章只是展示了冰山一角。在你遇到它的第一天就掌握它是不可能的。一个更好的学习策略是先通过一些简单的例子来理解它的基本语法,然后你可以查看它的综合官方手册来了解更复杂的用法。 谢谢阅读。如果喜欢,请关注我,成为Medium会员,享受更多精彩文章。 更多关于Linux的文章: Linux大师