sed(Stream Editor)是一个强大的文本处理工具,常用于文本替换、删除、插入等操作。以下是一些常见的 sed 使用实例:
1. 替换文本
将文件中的某个字符串替换为另一个字符串。
sed 's/old_text/new_text/' filename
- s 表示替换操作。
- old_text 是要被替换的文本。
- new_text 是替换后的文本。
- filename 是要处理的文件名。
2. 全局替换
默认情况下,sed 只替换每行中第一个匹配的字符串。如果要替换所有匹配的字符串,可以使用 g 选项。
sed 's/old_text/new_text/g' filename
3. 删除行
删除文件中包含特定字符串的行。
sed '/pattern/d' filename
- d 表示删除操作。
- pattern 是要匹配的字符串。
4. 删除空白行
删除文件中的所有空白行。
sed '/^$/d' filename
- ^$ 表示空白行。
5. 插入文本
在指定行前或后插入文本。
- 在指定行前插入文本:
- sed '2i\new_line_text' filename
- 在第2行前插入 new_line_text。
- 在指定行后插入文本:
- sed '2a\new_line_text' filename
- 在第2行后插入 new_line_text。
6. 替换特定行
替换文件中的特定行。
sed '2c\new_line_text' filename
将第2行替换为 new_line_text。
7. 打印特定行
打印文件中的特定行。
sed -n '2p' filename
打印第2行。
8. 使用正则表达式
sed 支持正则表达式,可以进行更复杂的匹配和替换。
sed 's/[0-9]*//g' file.txt
删除 file.txt 中的所有数字。
9. 保存修改到原文件
默认情况下,sed 不会修改原文件,而是将结果输出到标准输出。如果要直接修改原文件,可以使用 -i 选项。
sed -i 's/old_text/new_text/g' filename
10. 备份原文件
在使用 -i 选项时,可以指定备份文件的扩展名,以便在修改前备份原文件。
sed -i.bak 's/old_text/new_text/g' filename
11. 处理多个文件
可以一次性处理多个文件。
sed 's/old_text/new_text/g' file1.txt file2.txt
12. 使用脚本文件
可以将 sed 命令写入脚本文件,然后通过 -f 选项执行。
sed -f script.sed filename
13. 处理特定范围的行
可以指定行的范围进行操作。
sed '2,5s/old_text/new_text/g' filename
替换第2行到第5行中的 old_text 为 new_text。
14. 处理匹配行的下一行
可以使用 n 命令处理匹配行的下一行。
sed '/pattern/{n;s/old_text/new_text/}' filename
在匹配 pattern 的行的下一行中,将 old_text 替换为 new_text。
15. 使用变量
在脚本中使用变量时,可以使用双引号而不是单引号。
var="new_text"
sed "s/old_text/$var/g" filename