grep负责快速筛选匹配行,awk负责按字段处理、计算和格式化输出;二者组合可高效解决日志分析、配置提取等实际问题。

Linux 中 grep 和 awk 是文本处理的两大利器,它们分工明确又常配合使用:grep 负责“找”,快速筛选匹配行;awk 负责“拆”和“算”,按字段处理、计算、格式化输出。掌握二者组合用法,能高效解决日志分析、配置提取、数据清洗等实际问题。
grep 默认逐行匹配正则,但很多场景需要更稳更准:
grep -w 'error' 不会误中 errors 或 enderror)|、+、? 等,例如 grep -E 'fail|error' /var/log/syslog
grep -v '^#|^$' 去掉注释和空行)awk 默认以空白(空格/制表符)为分隔符,用 $1、$2… 引用字段,$0 表示整行:
awk '$3 > 100 {print $2}' data.txt
awk '{count[$1]++} END {for (i in count) print i, count[i]}' access.log
awk -F':' '$3 >= 500 {print $1}' /etc/passwd
NF(字段数)、NR(当前行号)很实用,比如跳过首行:awk 'NR>1 {print $1,$3}' file.csv
单独用一个命令往往不够,组合才能应对复杂需求。典型流程是:grep 快速缩小范围 → awk 精细提取或加工:
grep ' 500 ' /var/log/nginx/error.log | awk '{print $7}'
grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log | awk '{ip[$0]++} END{for (i in ip) print i, ip[i]}'
awk '$5 > 200 {print $0}' app.log | grep 'timeout'
组合使用时容易忽略细节,导致结果不准或效率低下:
Error 和 error
~(如 $2 ~ /abc/),等于号 == 是字符串全等,别混淆jq 或 csvkit,但 grep+awk 已覆盖 80% 终端日常需求基本上就这些。熟练后你会发现,一条简洁的管道命令,就能替代几十行 Python 脚本——不复杂,但容易忽略细节。
以上就是Linux文本处理命令解析_Linux grep与awk综合用法讲解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号