Skip to content

Sed 命令笔记

sed(stream editor)是一个用于处理文本流的命令行工具,它可以对输入的数据进行编辑、替换、删除和插入等操作。sed 常用于在脚本中处理文本文件。

1. 基本语法

bash
sed [选项] '操作' 文件
  • [选项]:可选,指定 sed 的行为。
  • '操作':要执行的 sed 命令,通常用单引号包围。
  • 文件:要处理的文件,如果不指定文件,sed 会从标准输入读取。

2. 常见选项

  • -e:允许在命令行上多次指定 sed 操作。
  • -i:直接修改文件内容,而不是输出结果。
  • -n:禁止默认输出,只有在使用 p(打印)命令时才输出。
  • -r:启用扩展正则表达式(ERE)。

3. 基本操作

3.1 查找和替换

替换文件中的内容,格式为 s/旧文本/新文本/

plain
sed 's/old/new/' file.txt
  • 默认只替换每行第一个匹配的字符串。
  • 如果要替换所有匹配的字符串,可以加上 g
plain
sed 's/old/new/g' file.txt

3.2 替换并保存

使用 -i 选项修改原文件:

plain
sed -i 's/old/new/g' file.txt

3.3 删除行

使用 d 命令删除特定行:

plain
sed '2d' file.txt   # 删除第2行

删除匹配模式的所有行:

plain
sed '/pattern/d' file.txt

3.4 打印行

使用 p 命令打印特定行(结合 -n 选项):

plain
sed -n '2p' file.txt   # 打印第2行

3.5 替换并添加内容

在指定行后添加内容:

plain
sed '2a New content' file.txt   # 在第2行后添加 "New content"

在指定行前添加内容:

plain
sed '2i New content' file.txt   # 在第2行前添加 "New content"

4. 正则表达式

sed 使用正则表达式(RE)进行模式匹配。可以使用基本正则表达式(BRE)或扩展正则表达式(ERE)来进行匹配。

4.1 使用字符集

字符集匹配任意一个字符:

plain
sed 's/[aeiou]/X/g' file.txt  # 将元音字母替换为 X

4.2 使用反向引用

使用反向引用可以在替换中引用捕获组:

plain
sed 's/\([a-z]\)\([0-9]\)/\1-\2/g' file.txt   # 将字母数字组合替换为字母-数字

5. 实际应用

5.1 批量替换多个文件中的文本

plain
sed -i 's/old/new/g' *.txt   # 在所有 .txt 文件中进行替换

5.2 从文件中删除空行

plain
sed '/^$/d' file.txt   # 删除所有空行

5.3 修改文件中的特定行

修改特定行内容,如修改第3行的内容:

plain
sed '3s/.*/new content/' file.txt   # 将第3行内容替换为 "new content"

6. 总结

sed 是一个强大的文本处理工具,适用于批量替换、删除、插入等操作。在日常的脚本和系统管理中,经常会用到 sed 来处理日志文件、配置文件等。通过学习和掌握其常见操作,可以极大提高工作效率。

感谢阅读,欢迎交流!