Appearance
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
来处理日志文件、配置文件等。通过学习和掌握其常见操作,可以极大提高工作效率。