插件窝 干货文章 Linux中AWK命令的常见用法

Linux中AWK命令的常见用法

AWK print file txt 877    来源:    2025-05-13

AWK 是 Linux 中强大的文本处理工具,尤其适合结构化数据的处理。以下是 AWK 的常见用法及示例:


1. 基本语法结构

awk 'pattern {action}' file.txt
  • pattern:匹配条件(可选)
  • action:处理动作(如打印、计算等)

2. 常见用法示例

2.1 打印指定列

# 打印第1列和第3列
awk '{print $1, $3}' file.txt

# 打印最后一列
awk '{print $NF}' file.txt

2.2 指定分隔符

# 使用冒号作为分隔符(默认是空格/制表符)
awk -F':' '{print $1}' /etc/passwd

# 输出时用指定符号连接列
awk '{print $1 " -> " $3}' file.txt

2.3 条件过滤

# 打印第2列大于10的行
awk '$2 > 10 {print $0}' file.txt

# 匹配包含"error"的行(正则表达式)
awk '/error/ {print}' log.txt

# 多条件组合(&& 或 ||)
awk '$1 == "root" && $3 > 1000 {print}' file.txt

2.4 内置变量

# NR:当前行号;NF:当前行的列数
awk '{print NR, NF, $0}' file.txt

# 打印总行数
awk 'END {print NR}' file.txt

2.5 计算与统计

# 求和第3列
awk '{sum += $3} END {print sum}' file.txt

# 计算平均值
awk '{sum += $1; count++} END {print sum/count}' data.txt

# 分组统计(按第1列分组求和)
awk '{arr[$1] += $2} END {for (i in arr) print i, arr[i]}' data.txt

2.6 BEGIN 和 END 块

# 在开头和结尾执行操作
awk 'BEGIN {print "Start"} {print $0} END {print "End"}' file.txt

2.7 字符串操作

# 获取字符串长度
awk '{print length($1)}' file.txt

# 字符串拼接
awk '{print $1 "-" $2}' file.txt

2.8 修改输出格式

# 格式化输出(类似C语言的printf)
awk '{printf "%-10s %5d\n", $1, $2}' file.txt

3. 高级用法

3.1 使用外部变量

var="value"
awk -v awk_var="$var" '{print awk_var, $1}' file.txt

3.2 调用Shell命令

# 通过system()调用(慎用)
awk '{if ($1 ~ /error/) system("grep " $1 " /var/log/syslog")}' log.txt

3.3 处理多文件

# 处理多个文件,FILENAME变量表示当前文件名
awk '{print FILENAME, $0}' file1.txt file2.txt

4. 常见应用场景

  • 日志分析:提取特定错误信息。
  • 数据清洗:过滤/转换CSV或日志文件。
  • 报表生成:统计汇总数据。
  • 文本格式化:调整列顺序或分隔符。

5. 注意事项

  • AWK 默认按行处理,适合逐行操作。
  • 复杂逻辑建议使用脚本文件(awk -f script.awk)。
  • 性能敏感场景中,AWK 通常比 Python 更快。

掌握这些用法后,可以高效处理大多数文本任务。如需更复杂的功能,可深入学习 AWK 的数组、函数等特性。

下一篇:没有了