Linux 管道的实际应用
在最后一步中,你将通过分析日志文件、处理数据文件和解决常见的系统管理任务来探索 Linux 管道的一些实际应用。
分析日志文件
系统管理员经常需要从日志文件中提取有用的信息。让我们使用管道来分析 server_log.txt 文件:
- 统计每个日志级别(INFO、WARNING、ERROR)的出现次数:
cd ~/project
cat server_log.txt | grep -o "INFO\|WARNING\|ERROR" | sort | uniq -c
输出:
4 INFO
3 ERROR
2 WARNING
- 提取所有时间戳和日志级别:
cat server_log.txt | grep -o "\[[0-9-]* [0-9:]*\] [A-Z]*" | head -5
输出:
[2023-05-10 08:45:22] INFO
[2023-05-10 09:12:35] ERROR
[2023-05-10 09:14:01] INFO
[2023-05-10 09:14:10] INFO
[2023-05-10 09:30:45] WARNING
处理 CSV 数据
让我们使用管道来分析 sales.csv 文件:
- 提取并统计已售出的唯一产品:
cat sales.csv | tail -n +2 | cut -d',' -f2 | sort | uniq -c
tail -n +2 命令跳过 CSV 文件的标题行。
输出:
2 Keyboard
2 Laptop
2 Monitor
2 Mouse
1 Printer
- 计算售出的总单位数:
cat sales.csv | tail -n +2 | cut -d',' -f3 | paste -sd+ | bc
输出:
113
此管道提取第三列(Units,单位),将所有值与 "+" 符号组合在一起,然后使用 bc 计算器计算总和。
系统监控任务
Linux 管道对于系统监控和管理任务也很有用:
- 列出占用最多内存的前 5 个进程:
ps aux | sort -k 4 -r | head -6
此命令按第 4 列(内存使用量)降序对进程进行排序,并显示前 6 行(包括标题)。
- 查找所有大于 10MB 的文件,并按大小对其进行排序:
cd ..
find . -type f -size +10M -exec ls -lh {} \; | sort -k 5 -h
此命令将显示按大小排序的大型测试文件。输出应类似于:
-rw-r--r-- 1 labex labex 12M May 10 12:00 ./large_file3.dat
-rw-r--r-- 1 labex labex 15M May 10 12:00 ./large_file2.dat
-rw-r--r-- 1 labex labex 20M May 10 12:00 ./large_file1.dat
此示例演示了如何查找和按大小排序文件。这些文件是在设置期间专门创建的,用于展示 Linux 中文件大小过滤的工作原理。
这些示例演示了如何使用 Linux 管道有效地解决实际问题。通过组合简单的命令,你可以创建强大的数据处理工作流,而无需编写复杂的脚本或程序。