管道(Pipe)是Linux/Unix系统中强大的功能之一,它允许将一个命令的输出直接作为另一个命令的输入。合理使用管道可以大幅提高工作效率,减少中间文件,实现复杂的数据处理流程。
command1 | command2 | command3 ...
# 查找并统计特定类型的文件数量
find . -name "*.log" | wc -l
# 查找并立即处理文件内容
grep -r "error" /var/log | less
# 查找并杀死特定进程
ps aux | grep 'nginx' | awk '{print $2}' | xargs kill -9
# 按内存使用排序进程
ps aux | sort -rnk 4 | head
# 统计日志文件中各IP出现的次数
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr
# 提取CSV文件的特定列并排序
cut -d',' -f2 data.csv | sort | uniq
# 实时监控日志变化
tail -f /var/log/syslog | grep "error"
# 监控网络连接变化
watch -n 1 "netstat -an | grep ESTABLISHED | wc -l"
# 将JSON转换为易读格式
curl -s http://example.com/api | jq '.'
# 将CSV转换为JSON
cat data.csv | csvtojson | jq '.'
# 多步骤日志分析
cat server.log | grep "500" | awk '{print $7}' | sort | uniq -c | sort -nr | head -20
# 并行处理加速
find . -type f -name "*.txt" | parallel -j 8 "gzip {}"
使用xargs处理大量文件:避免"Argument list too long"错误
find /path -type f -name "*.tmp" | xargs rm
使用tee命令分流输出:同时查看和保存结果
dmesg | grep "error" | tee errors.txt | less
合理排序命令:将过滤命令(grep)放在前面减少后续处理量
使用命名管道:处理复杂流程
mkfifo mypipe
command1 > mypipe & command2 < mypipe
利用awk/sed进行复杂文本处理:减少管道步骤
掌握这些管道技巧可以显著提高在Linux环境下的工作效率,特别是在处理日志分析、数据转换和系统管理等任务时。