Linux awk 命令
awk 是一种处理文本文件的语言,是一个强大的文本分析工具。
awk 可以逐行读取文本文件,并提供类似编程语言的功能,例如:
- 变量定义与计算
- 条件判断与循环
- 字符串处理与格式化输出
这些特性让 AWK 在处理结构化文本(如 CSV、日志文件)时非常高效。
之所以叫 awk 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
语法
awk options 'pattern {action}' file
选项参数说明:
options:是一些选项,用于控制awk的行为。pattern:是用于匹配输入数据的模式。如果省略,则awk将对所有行进行操作。{action}:是在匹配到模式的行上执行的动作。如果省略,则默认动作是打印整行。
options 参数说明:
-
-F <分隔符>或--field-separator=<分隔符>: 指定输入字段的分隔符,默认是空格。使用这个选项可以指定不同于默认分隔符的字段分隔符。 -
-v <变量名>=<值>: 设置awk内部的变量值。可以使用该选项将外部值传递给awk脚本中的变量。 -
-f <脚本文件>: 指定一个包含awk脚本的文件。这样可以在文件中编写较大的awk脚本,然后通过-f选项将其加载。 -
-V或--version: 显示awk的版本信息。 -
-h或--help: 显示awk的帮助信息,包括选项和用法示例。
以下是一些常见的 awk 命令用法:
打印整行:
awk '{print}' file
打印特定列:
awk '{print $1, $2}' file
使用分隔符指定列:
awk -F',' '{print $1, $2}' file
打印行数:
awk '{print NR, $0}' file
打印行数满足条件的行:
awk '/pattern/ {print NR, $0}' file
计算列的总和:
awk '{sum += $1} END {print sum}' file
打印最大值:
awk 'max < $1 {max = $1} END {print max}' file
格式化输出:
awk '{printf "%-10s %-10s\n", $1, $2}' file

浙公网安备 33010602011771号