Linux 文本处理与搜索命令速查
更新时间:2026-08-25。本文是 Linux 命令速查主题第②族:文本处理与搜索,约 24 个命令。深入讲解见 Shell 文本处理。
一、查看与浏览
| 命令 | 作用 | 常用示例 |
|---|---|---|
cat | 连接并输出文件 | cat file;cat -n file(显示行号);cat a b > c(合并) |
less | 分页查看(支持回翻/搜索) | less /var/log/syslog;进入后 / 搜索、q 退出 |
head | 查看文件开头 | head -n 20 file;head -c 100 file(前 100 字节) |
tail | 查看文件结尾 | tail -n 50 file;tail -f file(实时跟踪日志) |
nl | 带行号输出 | nl file;nl -ba file(所有行都编号) |
二、搜索与过滤
| 命令 | 作用 | 常用示例 |
|---|---|---|
grep | 按正则搜索文本 | grep "error" log.txt;grep -i(忽略大小写);grep -r(递归);grep -v(反选);grep -c(计数);grep -E(扩展正则) |
egrep | grep 扩展正则别名 | `egrep 'err |
fgrep | 固定字符串搜索(最快) | fgrep 'a.b' file(点号按字面匹配) |
strings | 提取二进制中的可读字符串 | `strings /bin/ls |
三、行处理与转换
| 命令 | 作用 | 常用示例 |
|---|---|---|
cut | 按列切分 | cut -d: -f1 /etc/passwd(以 : 分割取第 1 列);cut -c1-10 file(取前 10 字符) |
paste | 按行并排拼接 | paste a.txt b.txt(两文件对应行合并成一行,默认 Tab 分隔) |
join | 按公共字段连接两个文件 | join -t, -1 1 -2 1 a.csv b.csv |
sort | 排序 | sort file;sort -n(数值);sort -r(倒序);sort -k2(按第 2 列);sort -u(去重) |
uniq | 去重(相邻重复行) | sort file | uniq -c(计数);uniq -d(只显示重复行) |
wc | 统计行/词/字节 | wc -l file(行数);wc -w(词数);wc -c(字节数) |
tr | 字符替换/删除 | echo abc | tr 'a-z' 'A-Z'(转大写);tr -d '\r' < win.txt(去 CR) |
sed | 流编辑器 | sed 's/old/new/g' file(全局替换);sed -i(原地修改);sed -n '10,20p'(打印 10-20 行);sed '/^#/d'(删注释行) |
awk | 列处理 + 编程 | awk '{print $1}' file;awk -F: '{print $1,$3}' /etc/passwd;awk 'NR>1'(跳过表头);awk '{sum+=$1} END{print sum}'(求和) |
fold | 按宽度折行 | fold -w 80 file |
四、合并、拆分与管道
| 命令 | 作用 | 常用示例 |
|---|---|---|
diff | 逐行比较文件差异 | diff a.txt b.txt;diff -u a b(unified 格式);diff -r dir1 dir2(递归比较目录) |
cmp | 逐字节比较 | cmp a b && echo same($? 为 0 表示相同) |
split | 拆分大文件 | split -l 1000 big.log part_(每 1000 行一个文件);split -b 100M big |
tee | 输出到屏幕同时写入文件 | cmd | tee out.log;cmd | tee -a out.log(追加) |
xargs | 将标准输入转为命令参数 | find . -name "*.log" | xargs grep error;xargs -n1(每次 1 个);xargs -I{} cp {} /backup/ |
column | 按列对齐 | column -t -s: /etc/passwd(对齐输出,可读性更好) |
五、编码与转换
| 命令 | 作用 | 常用示例 |
|---|---|---|
od | 八进制/十六进制转储 | od -c file(按字符);od -tx1 file(十六进制字节) |
hexdump | 十六进制查看 | hexdump -C file(十六进制+ASCII) |
base64 | Base64 编解码 | echo hello | base64;echo aGVsbG8= | base64 -d |
iconv | 字符编码转换 | iconv -f GBK -t UTF-8 gbk.txt > utf8.txt |
一句话总结
文本处理速查:看日志用 tail -f/less/grep,改文本用 sed,拆字段用 cut/awk,排重计数用 sort|uniq -c,合并拆分别用 paste/join/split,管道串联用 xargs/tee——24 个命令是日志分析与数据加工的骨干。