AWK命令完全指南:Linux/Unix文本处理利器详解

AWK适用于模式搜索和处理。AWK脚本会搜索一个或多个文件以识别匹配的模式,并对这些匹配的模式执行特定任务。在本指南中,我们将深入探讨AWK Linux命令及其功能。

AWK 能够执行哪些操作?

  • 逐行扫描文件
  • 将每行输入分割成字段
  • 将输入行和字段与模式进行比较
  • 对匹配的行执行指定的操作

AWK命令的实用性

  • 修改数据文件
  • 生成格式化报告

awk命令的编程概念

  • 格式化输出行
  • 条件语句和循环
  • 算术和字符串操作

AWK 的语法

$ awk options 'selection_criteria {action }' input-file > output-file
awk命令示例文件

awk命令示例

打印特定的列

执行以下命令以打印第二和第三列。

$ awk '{print $2 "\t" $3}' file.txt
AWK打印第二和第三列

打印文件中的所有行

如果您想要列出文件中的所有行和列,请执行以下命令。

$ awk ' {print $0}' file.txt
AWK打印所有行

打印出匹配特定模式的所有行

如果你想打印出符合某个模式的行,语法如下所示。

$ awk '/待匹配的变量/ {print $0}' file.txt

例如,要匹配所有包含字母’o’的条目,语法将是:

$ awk '/o/ {print $0}' file.txt
AWK Linux命令匹配所有行
$ awk '/e/ {print $0}' file.txt
AWK匹配包含字母E的行

打印匹配特定模式的列

当AWK定位到一个匹配的模式时,该命令会处理整个记录。你可以通过指定仅显示特定字段来更改默认行为。例如:

$ awk '/a/ {print $3 "\t" $4}' file.txt
AWK匹配特定列

计数和打印匹配的模式

您可以使用AWK来计算和打印每个模式匹配的行数。例如,下面的命令会计算匹配模式出现的实例数。

$ awk '/a/{++cnt} END {print "Count = ", cnt}' file.txt
计算匹配特定模式的列数

打印具有更多或更少字符数量的行

AWK内置了一个length函数,用于返回字符串的长度。$0变量存储了整行内容,在没有代码块的情况下,将采取默认操作,即打印操作。因此,在我们的文本文件中,如果一行超过20个字符,则比较结果为真,然后按如下所示打印出该行。

$ awk 'length($0) > 20' file.txt
打印具有更多或更少字符数量的行

将AWK的输出保存到一个不同的文件中

如果您希望保存输出结果,请使用>重定向操作符。例如:

$ awk '/a/ {print $3 "\t" $4}' file.txt > Output.txt

您可以使用如下所示的cat命令来验证结果。

$ cat output.txt
AWK重定向输出

结论

AWK是一种简单而强大的编程脚本工具,你可以用它来处理文档中的文本或执行特定的功能。本文介绍了一些常用的AWK命令,但还有更多功能等待你去探索和发现。

bannerAds