Linux 命令
sed常用的命令选项表
命令选项 | 功能描述 |
---|
-r | 支持正则表达式 |
-i[SUFFIX] | 直接修改源文件,如果设置了SUFFIX 后缀名,sed会将数据备份 |
-n ,–silent | 屏蔽默认输出功能,默认sed会把匹配到的数据显示到屏幕上 |
-e | 指定需要执行的sed 指令,支持使用多个带 -e 参数 |
-f | 指定需要执行的脚本,需要 提前将sed 指令写入文件中 |
sed 基本操作指令
基本操作指令 | 功能描述 |
---|
p | 打印当前匹配数据行 |
l | 小写L ,打印当前匹配的数据行(显示控制字符,如回车) |
= | 打印当前读取的数据行 |
a text | 匹配的数据行后追加文本内容 |
i text | 匹配的数据行前追加文本内容 |
d | 删除匹配的数据行整行内容 |
c text | 将匹配的数据行整行内容替换为特定的内容 |
r filename | 从文件中读取数据并追加到匹配的数据行后面 |
w filename | 将匹配到的数据写入特定的文件中 |
q [exit code] | 立刻退出sed 脚本 |
s/regexp/replace/ | 使用正则匹配,将匹配到的数据替换为特定的内容 |
sed 指令执行前需要根据条件定位需要处理的数据行,如果没有指定定位条件行,则默认sed 会对所有数据执行特定的指令。
sed 支持的数据定位方法
格式 | 功能描述 |
---|
number | 直接根据行号匹配 |
first~step | 从first 行开始,步长为step,匹配所有满足条件的数据行 |
$ | 匹配最后一行 |
/regexp/ | 使用正则表达式匹配数据行 |
\cregexpc | 使用正则表达式匹配数据行,c 可以是任意字符 |
addr1,addr2 | 直接使用行号定位,匹配从addr1到addr2的所有行 |
addr1,+N | 直接使用行号定位,匹配从addr1以及后面的N行 |
基本用法
sed 命令选项 '定位方式 基本操作' 操作文件
sed -n '1p;3p;5p' text.txt
sen -n -e '1p' -e '/text/l' text.txt
sed 高级指令
高级指令 | 功能描述 |
---|
h | 将模式空间的数据复制到保留空间 |
H | 将模式空间的数据追加到保留空间 |
g | 将保留空间的数据复制到模式空间 |
G | 将保留空间的数据追加到模式空间 |
x | 将模式空间和保留空间的数据对调 |
n | 读取下一行数据到模式空间 |
N | 读取下一行数据追加到模式空间 |
y/源文件/目标文件 | 以字符为单位将源字符转为目标字符 |
:label | 为t或者b指令定义label标签 |
t label | 有条件跳转到标签(label),如果没有label则跳转到指令的结尾 |
b label | 跳转到标签label ,如果没有label 则跳转到指令的结尾 |
- sed 在对数据进行编辑的时候需要先将读取的数据写入模式空间,而sed 除了有一个用于临时存储的模式空间,还设计有一个保留空间,保留空间中默认仅包含有一个回车符。