Linux系统AWK编程语言指南


简介

AWK是一种用于Linux文本处理的脚本语言。它旨在操作文本文件中的数据,是进行数据分析和管理任务的理想工具。AWK拥有众多内置函数和运算符,可以执行简单的搜索和替换任务,或进行复杂的数据转换。其简洁的语法和多功能性使其易于操作文本文件。对于在Linux环境中处理文本文件的人来说,AWK是一个强大的工具。

让我们提供一份Linux系统AWK编程语言的初学者指南。我们将介绍该语言的基本语法、使用AWK可以执行的不同类型的操作以及如何使用AWK处理文本文件。我们还将为所介绍的每个操作提供代码示例和输出。

在Linux操作系统中安装AWK

一种安装方法是利用Linux发行版提供的包管理器。安装命令如下:

$ sudo apt-get install gawk

安装后,我们可以检查Linux中AWK的版本:

$ awk --version

如果AWK已安装,该命令将显示版本号。

AWK编程语言中的变量

AWK提供许多可在模式和操作中使用的内置变量。最常用的变量是:

  • NR - 表示当前记录(行)号

  • NF - 表示输入记录中字段的总数。

  • $0 - 整个当前记录。

  • $1, $2, $3, … - 当前记录中的第一、第二、第三……个字段。

除了这些内置变量外,AWK还允许用户定义变量。可以使用 = 运算符为用户定义的变量赋值。

AWK命令行选项

AWK通常使用awk命令从命令行调用,该命令接受各种选项和参数。以下是常用选项的列表:

  • -F - 指定输入文件的字段分隔符。

  • -v - 为变量设置值。

  • -f - 指定要执行的AWK脚本文件。

  • -n - 禁用自动打印行。

  • -W - 启用警告。

使用AWK从文件中提取字段

假设我们有一个名为“filename.csv”的CSV文件,其格式如下:

name, age, gender
Papan, 22, Male
Priya, 27, Female

要提取年龄和性别字段,可以使用以下命令:

$ awk -F, '{ print $2, $3 }' filename.csv

此AWK代码将打印名为“filename.csv”的CSV文件的第二和第三个字段(列),分隔符为逗号(',')。

解释如下:

  • ‘awk’ - 用于运行AWK脚本的命令

  • ‘-F,’ - 此选项将字段分隔符设置为逗号。这告诉AWK将CSV文件视为字段之间以逗号作为分隔符。

  • “ ' { print $2, $3 }' ” - 这是AWK脚本本身。它告诉AWK打印文件中每一行的第二和第三个字段,用空格分隔。

age gender
22 Male
27 Female

此命令将字段分隔符设置为逗号 (-F,) 并打印文件中每一行的第二和第三个字段 ($2, $3)。

使用AWK命令过滤数据

我们有一个名为“data.txt”的文件,其中包含学生的信息,例如他们的姓名、年龄和成绩。我们想只筛选出成绩为“A”的学生。

示例

将以下内容放入“data.txt”文件:

John, 18, A
Sara, 19, B
Mike, 20, A
Lisa, 18, C
Tom, 19, A

要筛选出成绩为“A”的学生,可以使用以下AWK命令:

$ awk '$3=="A" {print}' data.txt

输出

John, 18, A
Mike, 20, A
Tom, 19, A

我们可以看到,只有成绩为“A”的行被打印出来。

示例

我们也可以在AWK命令中使用if语句来执行更复杂的筛选。例如,如果我们只想筛选出年龄大于18岁且成绩为“A”的学生,可以使用以下AWK命令:

$ awk '$2>18 && $3=="A" {print}' data.txt

输出

Mike, 20, A
Tom, 19, A

我们可以看到,只有满足这两个条件的行才被打印出来。

使用AWK命令实现for循环

有三种循环:

  • while循环

  • do-while循环

  • for循环

这里我们只实现“for循环”。

首先创建一个名为“input.txt”的文件,并将以下内容放入其中:

Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35

现在,让我们探讨如何在AWK中使用循环来处理此文件中的数据。

创建另一个名为“program.awk”的文件

以下AWK程序使用for循环打印文件的每一行:

{
   for (i = 1; i <= NF; i++) {
      printf("%s ", $i);
   }
   printf("
"); }

在此程序中,模式为空,这意味着操作将应用于文件的每一行。操作包含一个for循环,该循环使用NF(字段数)变量迭代行的每个字段(列)。在循环内,printf函数用于打印每个字段后跟一个空格。循环结束后,printf函数再次用于打印换行符。

要运行此程序,可以使用以下命令:

$ awk -F, -f program.awk input.txt

其中“program.awk”是AWK程序的文件名,“-F,”指定字段分隔符为逗号。

Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35

我们可以看到它打印了“input.txt”文件中的所有行。

结论

本文介绍了Linux上的AWK编程语言,提供了实际的代码示例及其相应的输出。AWK是用于处理文本数据和从中提取相关信息的高效工具。本指南涵盖了AWK的基本编程概念,包括循环。掌握这些知识后,我们将能够在Linux上创建我们自己的AWK程序。

更新于:2023年3月29日

浏览量:231

启动你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.