Sed是行处理器,每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(Pattern Space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。因此,执行速度也很快。
格式
sed [option]... 'script;script;...' [inputfile...]
常用选项
-n 不输出模式空间内容到屏幕,即不自动打印 -r ,-E 使用扩展正则表达式
-i 直接修改读取的档案内容,而不是由屏幕输出
-i.bak 备份文件并原处编辑
-f FIFE 从指定文件中读取编辑脚本
-e 多点编辑
-s 将多个文件视为独立文件
script格式:
地址 命令
地址格式:
- 不给地址: 对全文进行处理
- 步进:#~# 以#开头,跳#个;例如1~2就是奇数行
- 单地址:
- $ 最后一行;
- /pattern/ 被此处模式所能匹配到的每一行
- 地址范围:
- #,# 从#行到#行;
- #,+# 从#到+#行,例如3,+4表示3到7行
- /patten1/,/pattern2/
- /patterm/,#
- #,/pattern/
命令
- p 打印当前模式空间内容,追加到默认输出之后
- Ip 忽略大小写输出
- d 删除模式空间匹配的行,并立即启用下一轮循环
- a[\]text 在指定行后面追加文本,支持使用\n实现多行追加
- i[\]text 在行前面插入文本
- c[\]text 替换行为单行或多行文本
- = 为模式空间中的行打印行号
- ! 模式空间中匹配行取反处理
- q 结束或退出sed
- w file 保存模式匹配的行至指定文件
- r file 读取指定文件的文本至模式空间中匹配到的行后
查找替换
- s/pattern/string/ 修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s### 替换修饰符:
- g 行内全局替换
- p 显示替换成功的行
- w /PATH/FILE 将替换成功的行保存至文件中
- I,i 忽略大小写
c
1 [16:29:36 root@cen2 ~]#sed '/root/c\centos' /etc/passwd |head -10 2 centos 3 bin:x:1:1:bin:/bin:/sbin/nologin 4 daemon:x:2:2:daemon:/sbin:/sbin/nologin 5 adm:x:3:4:adm:/var/adm:/sbin/nologin 6 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 7 sync:x:5:0:sync:/sbin:/bin/sync 8 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 9 halt:x:7:0:halt:/sbin:/sbin/halt 10 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 11 centos
i
1 [16:30:08 root@cen2[ ~]#sed '/root/i\centos' /etc/passwd |head -10 2 centos 3 root:x:0:0:boss,quee,1234991,12211:/root:/bin/bash 4 bin:x:1:1:bin:/bin:/sbin/nologin 5 daemon:x:2:2:daemon:/sbin:/sbin/nologin 6 adm:x:3:4:adm:/var/adm:/sbin/nologin 7 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 8 sync:x:5:0:sync:/sbin:/bin/sync 9 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 10 halt:x:7:0:halt:/sbin:/sbin/halt 11 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
a
1 [16:41:25 root@cen2[ ~]#sed '/root/a\centos' /etc/passwd |head -10 2 root:x:0:0:boss,quee,1234991,12211:/root:/bin/bash 3 centos 4 bin:x:1:1:bin:/bin:/sbin/nologin 5 daemon:x:2:2:daemon:/sbin:/sbin/nologin 6 adm:x:3:4:adm:/var/adm:/sbin/nologin 7 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 8 sync:x:5:0:sync:/sbin:/bin/sync 9 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 10 halt:x:7:0:halt:/sbin:/sbin/halt 11 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin