当前位置: 首页> 文旅> 艺术 > 哈尔滨视频制作公司_快速网站排名优化_四年级下册数学优化设计答案_上海已经开始二次感染了

哈尔滨视频制作公司_快速网站排名优化_四年级下册数学优化设计答案_上海已经开始二次感染了

时间:2025/7/8 1:40:34来源:https://blog.csdn.net/weixin_41826215/article/details/147003129 浏览次数:0次
哈尔滨视频制作公司_快速网站排名优化_四年级下册数学优化设计答案_上海已经开始二次感染了

awk 是 Linux/Unix 系统中一个强大的文本处理工具,尤其擅长处理结构化文本数据(如日志、表格数据)。它不仅是命令行工具,还是一种脚本语言,支持变量、条件、循环等编程特性

1. 基本语法

 awk [选项] '模式 {动作}' 文件名

  • 模式(Pattern):决定何时执行动作(如行号、正则匹配)。

  • 动作(Action):对匹配的行执行的操作(如打印、计算)。

 2. 核心概念

内置变量
变量说明
$0当前整行内容
$1, $2第1列、第2列(默认以空格分隔)
NR当前行号(从1开始)
NF当前行的列数
FS输入字段分隔符(默认空格)
OFS输出字段分隔符(默认空格)
FILENAME当前处理的文件名

常用选项
  • -F:指定输入字段分隔符(如 -F':' 以冒号分隔)。

  • -v:定义变量(如 -v var=value)。

 3. 经典用法示例

 提取特定列

# 提取文件的第一列和第三列
awk '{print $1, $3}' a.txt

# 输出时用分号分隔列
awk '{print $1 ";" $3}' a.txt

 

  过滤行

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

# 打印包含 "error" 的行(不区分大小写)
awk '/error/i {print}' log.txt

 跳过标题行

 # 从第二行开始处理(常用于CSV)
awk 'NR > 1 {print $1, $2}' data.csv

计算列总和 

 # 计算第一列的总和
awk '{sum += $1} END {print sum}' numbers.txt

 BEGIN 和 END 块

  • BEGIN:在处理输入前执行(如初始化变量)。

  • END:在处理完所有行后执行(如输出统计结果)

 # 统计文件行数并计算平均值

awk '
BEGIN {sum = 0; count = 0}
NR == 1 {next}  # 遇到第一行直接跳到下一行
{sum += $1; count++}
END {print "Average:", sum/count}
' test01.txt

 

条件语句与循环

# 根据条件处理不同列
awk '{if ($1 > 100) print "High:", $0else print "Low:", $0
}' values.txt# 遍历所有列并打印偶数位置的值
awk '{for (i=1; i<=NF; i++) if (i%2==0) print $i}' file.txt

 自定义分隔符

# 根据条件处理不同列
awk '{if ($1 > 100) print "High:", $0else print "Low:", $0
}' values.txt# 遍历所有列并打印偶数位置的值
awk '{for (i=1; i<=NF; i++) if (i%2==0) print $i}' file.txt

 关联数组(哈希表)

# 统计每列值的出现次数
awk '{count[$1]++} END {for (key in count) print key, count[key]}' data.txt

4. 与 cut/sed 的区别

工具核心用途优势场景
cut按列切割简单文本快速提取固定列
sed流编辑(替换、删除、插入)基于行的文本替换和过滤
awk结构化文本处理、计算、统计复杂字段处理、编程逻辑集成

5. 学习资源

  • 官方文档:GNU Awk User’s Guide

  • 在线教程awk 30分钟入门(链接)

  • 书籍推荐:《Effective Awk Programming》

关键字:哈尔滨视频制作公司_快速网站排名优化_四年级下册数学优化设计答案_上海已经开始二次感染了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: