Linux 上的 AWK 编程语言指南Linux 上的 AWK 编程语言指南Linux 上的 AWK 编程语言指南Linux 上的 AWK 编程语言指南
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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 从文件中提取字段

假设我们有一个 CSV 文件名“filename.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 循环

有 3 个循环 -

  • 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 程序了。

©2015-2025 艾丽卡 support@alaica.com