sed — Linux 手册页
文章目录
名称语法
sed - 流编辑器
sed [选项]…[脚本] [输入文件]…
描述
sed 是一种流编辑器,用于对文本进行转换和处理。它按照行处理输入文件,并根据提供的脚本来执行指定的操作。sed 最早出现在 Unix 系统中,是根据 ed 编辑器开发而来。它的设计目标是对文本进行高效的批量处理和替换操作。
选项
适用于 sed 命令的主要选项有:
选项 | 描述 |
---|---|
-n, --quiet, --silent | 不输出模式空间的内容到标准输出 |
–debug | 注释程序执行过程 |
-e SCRIPT, --expression=SCRIPT | 添加脚本以进行处理 |
-f SCRIPT-FILE, --file=SCRIPT-FILE | 从文件中读取脚本 |
–follow-symlinks | 在原地处理时跟随符号链接 |
-i[SUFFIX], --in-place[=SUFFIX] | 直接修改文件内容,可选地创建备份文件 |
-l N, --line-length=N | 指定 `l’ 命令的所需换行长度 |
–posix | 禁用所有 GNU 扩展 |
-E, -r, --regexp-extended | 在脚本中使用扩展正则表达式(为了可移植性,请使用 POSIX -E) |
-s, --separate | 将文件视为独立的文件而不是单个连续流 |
–sandbox | 以沙盒模式运行(禁用 e/r/w 命令) |
-u, --unbuffered | 从输入文件加载最小量的数据,并更频繁地刷新输出缓冲区 |
-z, --null-data | 使用 NUL 字符分隔行 |
十种主要用法及其代码示例
以下是 sed 命令的十种常见用法及相应的代码示例,包括输入和输出:
1.替换文本中的字符串:
- 输入:file.txt
Hello, old text!
- 命令:
sed 's/old/new/' file.txt
- 输出:
Hello, new text!
2.全局替换文本中的字符串:
- 输入:file.txt
old old old
- 命令:
sed 's/old/new/g' file.txt
- 输出:
new new new
3.删除匹配到的行:
- 输入:file.txt
Line 1 Matched line Line 3
- 命令:
sed '/Matched/d' file.txt
- 输出:
Line 1 Line 3
4.删除空行:
- 输入:file.txt
Line 1 Line 3
- 命令:
sed '/^$/d' file.txt
- 输出:
Line 1 Line 3
5.在指定行前插入新行:
- 输入:file.txt
Line 1 Line 2 Line 3
- 命令:
sed '2i\New Line' file.txt
- 输出:
Line 1 New Line Line 2 Line 3
6.在指定行后插入新行:
- 输入:file.txt
Line 1 Line 2 Line 3
- 命令:
sed '2a\New Line' file.txt
- 输出:
Line 1 Line 2 New Line Line 3
7.打印指定行的内容:
- 输入:file.txt
Line 1 Line 2 Line 3
- 命令:
sed -n '2p' file.txt
- 输出:
Line 2
8.打印指定范围内的行:
- 输入:file.txt
Line 1 Line 2 Line 3 Line 4 Line 5
- 命令:
sed -n '2,4p' file.txt
- 输出:
Line 2 Line 3 Line 4
9.只打印匹配到模式的行:
- 输入:file.txt
Apple Banana Orange
- 命令:
sed -n '/an/p' file.txt
- 输出:
Banana Orange
10.使用脚本文件进行处理:
-
输入:file.txt
-
脚本文件:script.sed
s/Hello/Hi/
- 命令:`sed -f script.sed file.txt` - 输出:
Hi, World!
其他类似命令
- awk:awk 是一个功能强大的文本处理工具,它提供了更高级的脚本语法和更复杂的数据操作功能。
详细区别
sed 和 awk 都是用于处理文本的流编辑器,但它们之间存在一些区别。主要区别包括:
- sed 主要用于对文本进行替换、删除、插入等简单操作,适用于行级别的处理。
- awk 提供了更高级的脚本语法和数据处理功能,可以按字段对文本进行分割、计算、过滤等更复杂的操作。