一. grep —— 文本搜索工具

作用:根据正则表达式或固定字符串,从文件或标准输入中过滤出匹配的行。

基本语法:

grep [选项] PATTERN [文件…]

常用选项:

-i:忽略大小写

r:递归搜索目录中的文件

-v:反向匹配,显示不包含匹配的行

-n:显示匹配行的行号

-l:仅列出包含匹配的文件名

常用场景:

1.搜索日志中的错误信息

2.从配置文件中查找特定设置

3.结合管道过滤其他命令的输出

常见用法:

  • grep “error” app.log # 在文件中搜索包含 error 的行

  • grep -i “warning” app.log # 忽略大小写

  • grep -r “TODO” ./src # 递归搜索目录下所有文件

  • grep -E “error|fail” log # 使用扩展正则匹配多个模式

二. sed —— 流编辑器

作用:非交互式地对文本进行增、删、改、查等编辑操作,尤其适合脚本中批量处理文本。

基本语法:

sed [选项] ‘命令’ 文件

常用选项:

-e:添加执行的脚本

-i:直接修改文件

-n:取消默认输出

常用命令:

s/regexp/replacement/g:替换匹配的文本

d:删除匹配的行

p:打印匹配的行

常用场景:

1.替换文件中的文本

2.删除空行或指定行

3.在指定行前/后插入内容

在文本中插入或添加内容:

1. 在指定行前插入(i)

1
2
sed '3 i\这是插入的内容' file.txt   # 在第3行前插入一行
sed '/pattern/ i\内容' file.txt # 在匹配到的行前插入

2. 在指定行后追加(a)

1
2
sed '3 a\这是追加的内容' file.txt   # 在第3行后追加一行
sed '/pattern/ a\内容' file.txt # 在匹配到的行后追加

3. 在文件末尾追加

1
sed '$ a\最后一行追加的内容' file.txt

4. 在文件开头插入

1
sed '1 i\第一行插入的内容' file.txt

常见用法:

  • sed ‘s/old/new/g’ file.txt # 将所有 old 替换为 new(打印到终端)

  • sed -i ‘s/old/new/g’ file.txt # 直接修改文件(-i 参数)

  • sed ‘/^$/d’ file.txt # 删除空行

  • sed -n ‘5,10p’ file.txt # 打印第5到10行

三. awk —— 文本处理与报告生成工具

作用:一种强大的编程语言,擅长按列处理结构化文本,支持条件判断、循环、数组和格式化输出。

基本语法:

awk ‘脚本’ 文件

常用选项:

-F:指定字段分隔符

常用内置变量:

1.NR:记录的行号

2.NF:字段的个数

3.$0:当前行的全部文本

4.$n:第n个字段

常用场景:

1.提取日志中的特定字段(如 IP、时间)

2.对数据进行求和、统计

3.将非结构化文本整理成报表

常见用法:

  • awk ‘{print $1}’ file.txt # 打印每行的第一列(默认以空格/制表符分隔)

  • awk ‘$3 > 100 {print $1, $2}’ data.txt (第三列大于100时打印前两列)

  • awk -F’,’ ‘{sum+=$2} END {print sum}’ data.csv (对CSV文件第二列求和)

  • awk ‘/example/ {print NR, $0}’ filename.txt(打印包含”example”的行的行号和内容)