📜 三剑客能力对比表
🔍 第一剑:grep- 文本搜索专家
核心功能
在文件中快速查找包含特定模式(正则表达式)的行
常用选项速查
# 查找包含"error"的所有行(区分大小写)
grep "error" /var/log/syslog
# 忽略大小写查找"mysql"相关行并显示行号
grep -in "mysql" /var/log/syslog
# 查找所有以"127.0.0.1"开头的行
grep "^127.0.0.1" /etc/hosts
# 统计包含"GET"的请求次数(结合wc)
grep "GET" access.log | wc -l
# 查找所有.py文件中的"import numpy"
find . -name "*.py" | xargs grep "import numpy"高级技巧
使用-E和-O
# 使用扩展正则表达式(支持+、?、|等)
grep -E "error|warning" log.txt
# 只显示匹配的部分(而非整行)
grep -o "user_[0-9]\+" log.txt
# 查找IP地址(更精确的正则)
grep -Eo "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" log.txt✂️ 第二剑:sed- 流编辑器
核心功能
对文本进行非交互式编辑(替换、删除、插入等)
常用命令格式
sed 's/原内容/新内容/[选项]' 文件核心操作符
📊第三剑:awk- 文本分析大
核心功能
基于字段的文本处理和数据统计(特别适合表格数据)
基本结构
awk '模式 {动作}' 文件内置变量
特殊模式 BEGIN和 END:
•BEGIN{}:在处理任何输入行之前执行一次,常用于初始化变量、打印表头或设置分隔符。
•END{}:在处理完所有输入行之后执行一次,常用于输出汇总信息或最终结果。
awk 'BEGIN {print "Processing started"; sum=0} {sum += $1} END {print "Total sum:", sum}' data.txt举例
# 打印/etc/passwd的用户名(第1列)
awk -F: '{print $1}' /etc/passwd
# 打印文件的第一列和最后一列
awk '{print $1, $NF}' data.txt
# 统计文件行数
awk 'END {print NR}' file.txt
# 计算第二列的总和
awk '{sum+=$2} END {print sum}' data.txt
# 过滤出第三列大于100的行
awk '$3 > 100 {print $0}' data.csv
# 按IP统计访问次数(假设第一列是IP)
awk '{ip_count[$1]++} END {for(ip in ip_count) print ip, ip_count[ip]}' access.log高级用法