一、sed: Stream EDitor, 行编辑器;
(一) 用法:
sed [option]… ‘script’ inputfile…
script:
‘地址命令’
(二)、常用选项:
- -n:不输出模式中的内容至屏幕;
- -e: 多点编辑;
- -f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本;
- -r: 支持使用扩展正则表达式;
- -i: 原处编辑;
(三)、地址定界:
(1) 不给地址:对全文进行处理;
(2) 单地址:
#: 指定的行;
/pattern/:被此处模式所能够匹配到的每一行;
(3) 地址范围:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4) ~:步进
1~2
2~2
(四)、编辑命令:
d: 删除
p: 显示模式空间中的内容
a \text:在行后面追加文本;支持使用\n实现多行追加;
i \text:在行前面插入文本;支持使用\n实现多行插入;
c \text:替换行为单行或多行文本;
w /path/to/somefile: 保存模式空间匹配到的行至指定文件中;
r /path/from/somefile:读取指定文件的文本流至模式空间中匹配到的行的行后;
=: 为模式空间中的行打印行号;
!: 取反条件;
s///:支持使用其它分隔符,s@@@,s###;
替换标记:
g: 行内全局替换;
p: 显示替换成功的行;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
(五)、高级编辑命令:
h: 把模式空间中的内容覆盖至保持空间中;
H:把模式空间中的内容追加至保持空间中;
g: 从保持空间取出数据覆盖至模式空间;
G:从保持空间取出内容追加至模式空间;
x: 把模式空间中的内容与保持空间中的内容进行互换;
n: 读取匹配到的行的下一行至模式空间;
N:追加匹配到的行的下一行至模式空间;
d: 删除模式空间中的行;
D:删除多行模式空间中的所有行;
sed -n ‘n;p’ FILE:显示偶数行
sed ‘1!G;h;
!
d
′
F
I
L
E
:
逆
向
显
示
文
件
内
容
s
e
d
′
!d' FILE:逆向显示文件内容 sed '
!d′FILE:逆向显示文件内容sed′!N;
!
D
′
F
I
L
E
:
取
出
文
件
后
两
行
;
s
e
d
′
!D' FILE: 取出文件后两行; sed '
!D′FILE:取出文件后两行;sed′!d’ FILE:取出文件最后一行;
sed ‘G’ FILE:
sed ‘/^
/
d
;
G
′
F
I
L
E
:
s
e
d
′
n
;
d
′
F
I
L
E
:
显
示
奇
数
行
;
s
e
d
−
n
′
1
!
G
;
h
;
/d;G' FILE: sed 'n;d' FILE: 显示奇数行; sed -n '1!G;h;
/d;G′FILE:sed′n;d′FILE:显示奇数行;sed−n′1!G;h;p’ FILE: 逆向显示文件中的每一行;