了解有关Awk的信息:有史以来最强大的文本处理工具?

披露: 您的支持有助于保持网站的正常运行!我们会为此页面上推荐的某些服务收取推荐费.


Awk是您不想要的最强大的文本处理工具。但是,如果您处理大量数据,您可能会想到诸如“从该表中提取第二和第五列数据真是太好了”。以最简单的形式,这就是Awk所做的.

一点历史

在大多数人知道关系数据库是什么之前的日子里,而距MySQL的开发已经差不多二十年了,大量的数据存储在文本文件中。事实是,许多数据仍以这种方式存储。在Unix操作系统上尤其如此。例如,Unix / etc / passwd文件只是一个文本文件,对于系统上的每个用户来说只有一行,而用户的每个字段都用冒号分隔。例如:

管理员:*:1001:2001:管理员:/ home / root:/ home / sh
brian:*:1002:2002:Brian Kernighan:/ home / brian:/ home / bash

在大型系统上,此类passwd文件可能包含数千行。您可以想象,有时您可能需要完整的计算机上有帐户的人员姓名列表。在这种情况下,这将是第5个字段。因此,在1977年,三位程序员创建了一个通用程序来执行此操作。他们是:阿尔弗雷德·阿霍,彼得·温伯格和布莱恩·克尼根。他们的首字母AWK是Awk得名的方式.

Awk示例

默认情况下,Awk假定字段由空格字符分隔。但是您可以通过使用-F(或–field-separator)标志为Awk提供不同的字段分隔符,从而告诉Awk使用不同的字符。对于/ etc / passwd,我们想使用“:”字符.

给定分隔符,Awk将第一个字段分配给变量$ 1,将第二个字段分配给变量$ 2,依此类推。整行分配给$ 0。如果看起来很熟悉,那可能是因为Bourne和Bash Shell脚本是如何管理命令行参数的.

尽管可以将Awk脚本放入文件中,但它们通常只是作为Awk命令的一部分放在命令行中。这是一个简单的awk命令,它将输出/ etc / passwd文件中列出的帐户的所有用户名和真实名称:

awk -F:”/ etc / passwd

这将从上面的示例/ etc / passwd文件中产生以下输出:

管理员管理员
布赖恩·布莱恩·克尼根(Brian Kernighan)

这与Awk程序一样简单。但是您可能会看到,仅此一项就非常强大。通常,人们会将这样的文件添加到电子表格中,然后删除不需要的列,然后将结果另存为新的文本文件。如果您可以在几秒钟内用Awk做同样的事情,那将很麻烦。而这仅仅是个开始。您可以将输出设置为条件;您可以完全控制输出;如果要处理数字数据,则可以对其进行计算;还有更多.

Awk资源

Awk是一种非常容易学习的语言。而且有很多资源可以做到这一点。我们将在下面介绍一些.

在线教程

以下是一些教程,它们从一开始就开始,并带您了解语言的最重要方面。您觉得哪一个最有帮助取决于您.

  • Grymoire Awk教程:这是Bruce Barnett对Awk的出色介绍。查看所有这些Unix教程.
  • 通用线程:Awk示例:来自IBM,它提供了一种轻松学习Awk的方法。完成后请务必检查第2部分.
  • Awk教程:这是Awk的Tutorials Point简介,甚至带您完成了在Linux机器上的下载和安装过程.
  • Awk入门:本教程的运行速度非常快,但是如果您对shell脚本熟悉或过去使用过Awk,则是一个不错的选择.

图书

有许多好书为Awk提供了基础.

  • Aho和Kernighan撰写的Awk编程语言:这是有关Awk的原始书籍。但是,与大多数原始开发人员编写的书籍不同的是,这一本书确实很好并且易于理解.
  • 塞德 & Dougherty和Robbins撰写的Awk:这是处理Awk和流编辑器(sed)的经典作品。两者经常一起使用。使用系统后,您还可以关注Sed和Awk:Pocket Reference.
  • AWK编程:乔治·达基特(George Duckett)的问答:这是一本有趣的Kindle书,或多或少是一本烹饪书。它包含许多很棒的问题,这些问题将扩展您对Awk的看法以及您认为它可以被使用的方式.
  • 有效的awk编程:Arnold Robbins的通用文本处理和模式匹配:这有点像Awk编程语言的延续。它更深入地介绍了该语言,并重点介绍了Awk,Gawk的Gnu版本.

Awk实施

自从1977年第一个Awk实现以来,已经实现了许多实现。实际上,在1985年(发布Awk编程语言之前),Awk得到了极大的扩展。该版本通常称为“新Awk”或nawk。当前有一些更流行的版本.

  • Gawk:这是Gnu Project的Awk实施。它非常流行,并且比其他版本更好地支持其他语言.
  • BWK:这是“ Awk唯一的真理”,因为它是Awk编程语言使用的那个。它在FreeBSD上被广泛使用.
  • Mawk:这是最初由Mike Brennan编写的版本,但自2009年以来由Thomas Dickey进行了维护和更新。它的重点是速度.
  • BusyBox:这是通用工具,提供了许多简化的Unix工具,包括Awk.

在线论坛

有时,您只需要问一些问题。互联网上有很多人非常了解Awk。这里是一些更好的地方,可以回答您的问题.

  • Comp.lang.awk Google网上论坛:这是一个相对活跃的论坛,值得一看.
  • 堆栈溢出Awk问题:这是标记为与Awk有关的最新问题的页面。这是提出自己的问题的绝佳参考和地点.
  • Awk Reddit:这是Awk的子目录。它不是非常活跃,但是周围有很多知识渊博的人,它是回答问题的好地方.

摘要

Awk是一种出色的文本处理语言。如果您想把语言推得足够远,它可以做得很棒。同时,它的语法非常简单,因此可以迅速成为您的工作工具集的一部分。此处提供的资源将为您提供所需的所有帮助.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map