Sed 常用基本命令
目录
一、sed 简介
1、sed 是什么
sed是一种流编辑器,它是文本处理中非常好的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件,可以将数据行进行替换、删除、新增、选取等特定工作,简化对文件的反复操作,编写转换程序等
2、sed 工作原理
sed 会一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,成为”模式空间”,接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
h:把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g:从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x:把模式空间中的内容与保持空间中的内容进行互换
n:读取匹配到的行的下一行至模式空间
N:追加匹配到的行的下一行至模式空间
d:删除模式空间中的行
D:删除多行模式空间中的所有行
p:会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用
P:打印多行组中的一行
y:表示字符替换,可以替换多个字符,只能替换字符不能替换字符串,且不支持正则表达式
c:取代,c的后面可以接字串,这些字串可以取代 n1,n2 之间的行
a:新增,a的后面可以接子串,在下一行出现,前面接数字即新增在那一行的之后
i:插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
基本用法
读取(n)
[root@localhost ~]# sed -n '/a/n;p' wrq # -n取消自动打印模式空间
1
b
c
d
追加(N)
[root@localhost ~]# sed -n 'N;p' wrq
a
b
c
d
追加(a)
[root@localhost ~]# sed '4ae' wrq
a
b
c
d
e
插入(i)
[root@localhost ~]# sed '4iz' wrq
a
b
c
z
d
更改(c)
[root@localhost ~]# sed '2cbb' wrq
a
bb
c
d
转换(y)
[root@localhost ~]# sed 'y/a/A/' wrq
A
b
c
d
打印(p)
[root@localhost ~]# sed 'p' wrq
a
a
b
b
c
c
d
d
[root@localhost ~]# sed -n '3p' wrq
c
删除(d)
[root@localhost ~]# sed '2d' wrq
a
c
d
[root@localhost ~]# sed '/b/d' wrq #将匹配到的参数删除
a
c
d
h、H、g、G
[root@localhost ~]# sed '/a/{h};/d/{G}' wrq #将a复制到保持空间,匹配到d时将保持空间的内容追加到模式空间
a
b
c
d
a
[root@localhost ~]# sed '/a/{H};/d/{G}' wrq //将a追加到保持空间,匹配到d时将保持空间的内容追加到模式空间
a
b
c
d
a