1、处理文件的原理及过程
2、使用方法
处理动作 :
-w | 将匹配行写入到新文件中 |
---|---|
r | 整合,将两个文件合并 |
= | 显示行号 |
N | 提前将后一行的内容送入流编辑器 |
3、实例
(1)打印显示(动作一定要加’'单引号,一般-n和-p一起使用)
[root@server1 shells]# sed -n 4,7p /mnt/passwd //4,7是第4行至第7行
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
(2)增删改
###增(插入单行)
[root@server1 shells]# sed '2ihello wold' /mnt/passwd |head //动作i在指定行之前插入内容
abc
hello wold
root:x:0:0:ROOT:/root:/bin/bash.
####插入多行(脚本)
[root@server1 shells]# sed '2ihello\nworld' /mnt/passwd |head //利用换行符/n进行多行增加
abc
hello
world
root:x:0:0:ROOT:/root:/bin/bash.
bin:x:1:1:bin:/bin:/sbin/nologin.
####第二种方法
##删
[root@server1 shells]# sed '2d' /mnt/passwd |head //第二行被删除
abc
bin:x:1:1:bin:/bin:/sbin/nologin.
daemon:x:2:2:daemon:/sbin:/sbin/nologin
###改
(3)对文件进行搜索替换操作(重点)
s默认只对每行的第一个关键字进行替换,p打印时默认只打印更改过的行
分隔符“/” “#” “@” 意义都一样
第一个:搜索每一行第一个关键字root改成ROOT,打印出来(p)
第二个:全局的root都换成ROOT然后打印出来
第三个:替换掉全局每行开头的#,取消全局注释并将变化的行打印
第四个:将全局的/sbin/nologin替换成itcast并将变化的行打印出来
第五个:将第10行的/sbin/nologin替换成Itcast并打印
-w:
sed -n '/^root/w westos' passwd ##将passwd中以`^root`开头的行写入到westos文件中,且是覆盖的形式。
-c:
[root@node1 mnt]# sed '/root/c westos' passwd ##将含有root的整行替换成westos
-i:
sed -e '1,5iwestos lell' passwd ##在1到5行之前插入westos lell.
-r:
sed '5r westos' passwd ##在passwd第5行之后将westos文件内容整合到passwd.
-N: