进阶实战:文本处理三剑客
如果你需要对 100 个文件执行同样的替换操作,或者从几万行日志里提取特定 IP,你不需要打开编辑器,你需要的是“三剑客”。
1. Grep (搜索过滤器) —— “找得到”
用于提取包含关键词的行。
- 常见用法:
grep "error" /var/log/syslog: 查找包含 error 的行。grep -i "Error" .: 忽略大小写。grep -r "API" .: 递归搜索当前目录下所有文件。ps aux | grep nginx: 在进程列表中寻找特定的服务。
2. Sed (流编辑器) —— “修改大师”
用于对文本进行非交互式的搜索并替换。
- 常见用法:
sed -i 's/http/https/g' config.txt: 将文件中所有的 http 替换为 https。sed '5,10d' file: 仅在输出中删除文件的第 5 到 10 行。
3. Awk (文本处理器) —— “报表大师”
擅长按“列”处理复杂文本,其本质是一门微型编程语言。
- 常见用法:
ps aux | awk '{print $1, $11}': 提取 ps 命令输出的第 1 列(用户)和第 11 列(进程名)。awk -F: '{print $1}' /etc/passwd: 使用:作为分隔符,提取第一列(用户名)。
4. 组合实战:快速分析日志
▶ 实操:提取访问量最高的 10 个 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10awk提取第一列 IP。sort排序,为去重做准备。uniq -c计数并去重。sort -nr按数字倒序排。head显示前 10 名。