LabHub
学习 学习路径 课程

Linux 基础

管道把小程序连成句子

在 LabHub 中继续学习

一句话总结

grep 用于筛选,sed 用于修改,awk 用于字段处理和统计。管道把独立进程的 stdout 与 stdin 连接起来,可流式处理大文件。

统计高频项时要先排序再计数。默认管道退出码只来自最后一个命令,脚本应启用 pipefail 发现前段失败。处理大日志时应先按时间裁剪、只提取必要列,尽早减少后续排序的数据量;只找一个结果就立即停止。

关联数组可避免对原始全部行排序,C locale 可加速字节比较,压缩日志应直接流式读取,避免诊断本身耗尽磁盘。

概念图: 一句话总结 · 原文中的命令与标识符

原文中的命令与标识符

... | sort | uniq -c | sort -rn | head

uniq -c

sort

sort -rn

curl ... | jq ... | wc -l

set -o pipefail

cat f | grep p

grep p f

sort | uniq

sort -u

cat f | wc -l

wc -l < f

echo "$s" | cut -d. -f1

${s%%.*}

awk '$9 ~ /^5[0-9][0-9]$/ {print $7}' access.log | sort | uniq -c | sort -rn | head -10

awk '{t++; if ($5 != 200) e++} END {printf "%.1f\n", e*100/t}'

sed -n '/03:00/,/03:10/p'

grep -m 1

awk '{print $7}'

sort

sort

awk

awk '{c[$7]++} END {for (k in c) print c[k], k}' | sort -rn | head

LC_ALL=C

sort

grep

zgrep

zcat

/opt/lab/data/app.log