Awk文本处理

狂野之狼 2021-11-22 ⋅ 15 阅读

1. 什么是 Awk?

Awk 是一种功能强大的文本处理工具,可以用于数据提取、数据转换和文本分析等任务。它是由 Alfred V. Aho、Peter J. Weinberger 和 Brian W. Kernighan 在 1977 年开发的,名字由他们三人的名字的首字母组成。

2. Awk 的基本用法

Awk 的基本用法是将文本文件分为若干记录和字段,然后对每个记录进行处理。默认情况下,Awk 使用空格或制表符作为字段的分隔符。可以通过设置 FS 变量来修改字段的分隔符。常用的 Awk 命令格式如下:

awk 'pattern { action }' file

其中,pattern 是用于匹配记录的模式,action 是要执行的操作。如果省略 pattern,则默认匹配所有的记录。action 可以是一个简单的命令,也可以是由多条命令组成的块。当 pattern 匹配到记录时,相应的 action 就会执行。Awk 还内置了一些变量和函数,用于处理匹配到的记录和字段。

3. 实例:统计文件中单词的个数

下面是使用 Awk 统计文件中单词个数的示例:

awk '{ for (i=1; i<=NF; i++) count[$i]++ } END { for (word in count) print word, count[word] }' file.txt

在这个命令中,我们通过 for 循环遍历每个记录中的字段,并使用数组 count 统计每个单词出现的次数。最后,使用 END 块输出每个单词和对应的计数。

4. 实例:查找包含指定关键字的行

下面是一个查找包含指定关键字的行的示例:

awk '/keyword/' file.txt

在这个命令中,我们使用 /pattern/ 的形式来指定模式,匹配所有包含指定关键字的行。

5. 实例:格式化输出

Awk 还提供了丰富的格式化输出功能。下面是一个格式化输出整数、浮点数和字符串的示例:

awk '{ printf "%-10d %-10.2f %-10s\n", $1, $2, $3 }' file.txt

在这个命令中,我们使用 printf 函数来按照指定格式输出字段。%10d 表示输出一个宽度为 10 的十进制整数,%-10.2f 表示输出一个宽度为 10 的保留 2 位小数的浮点数,%-10s 表示输出一个宽度为 10 的字符串。

6. Awk 脚本

除了在命令行中运行 Awk 命令,我们还可以将 Awk 命令保存为脚本文件进行调用。脚本文件以 .awk.awkscript 为后缀,可以包含多条 Awk 命令和用户自定义的函数。

下面是一个使用 Awk 脚本进行文本处理的示例:

#!/usr/bin/awk -f

BEGIN { FS="," }

{ print $1 }

END { print "Done" }

在这个脚本文件中,BEGIN 块用于在处理开始之前设置变量和初始化,print $1 用于输出第一个字段,END 块用于在处理结束之后执行一些操作。然后,我们可以通过以下命令运行脚本:

awk -f script.awk file.txt

7. 小结

Awk 是一种强大的文本处理工具,可以用于数据提取、数据转换和文本分析等任务。通过灵活运用 Awk 的模式识别和处理能力,我们可以快速高效地处理大规模文本数据。希望本文对 Awk 的学习和应用有所帮助。

参考资料:


全部评论: 0

    我有话说: