前言
stream editor
是Unix
的行处理命令, 以行为单位, 依次读入文本的每行进行处理。
sed
一般不会对原文件进行操作, 当然, 有例外。
打印内容
p
参数: 前面接数字或正则表达式, 打印匹配内容
-n
参数: 不自动打印内容, 如果不和p
一起使用, 则会输出两次相同内容
!
参数: 对之前的参数进行取反
a~b
参数: 从a
行开始, 每隔b
行执行操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
|
增删(不影响原文件)
na string
参数: 表示在第n
行后面追加(append
)一行string
ni string
参数: 表示在第n
行前面插入(insert
)一行string
nd
参数: 将第n
行或匹配正则表达式n
的一行删除(delete
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
|
替换
nc string
参数: 将第n
行替换(replace
)为string
s/regexp/replacement/
参数: 将每行第一个匹配regexp
正则表达式的替换为replacement
s/regexp/replacement/g
参数: 将每行所有匹配regexp
正则表达式的替换为replacement
s/regexp/str1 & str2/g
参数: &
参数表示正则表达式匹配的值
s/regexp/\u&/g
参数: \u
首字母大写, \U
所有字母大写
sed -i "s/regexp/\u&/g"
: \u
首字母大写, 回写到原文件
()
参数: 括号捕获多个值, 用\1
、\2
等表示捕获的第几个值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| [root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~] [root@localhost ~]
|
退出
q
参数: 退出sed
命令
1 2 3 4
| [root@localhost ~]
[root@localhost ~]
|
读写原文件(修改原文件)
1 2 3 4 5 6 7 8
| [root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
|