sed命令格式:
sed [参数] '动作' 文件名
参数:
-n 打印具体的某一行时需要配合动作' p '使用
-i 直接修改文件内容,危险操作,三思
-e 进行多个动作处理时需要用到
动作:(动作参数前可直接跟行号)
' p ' 打印某一行,如果不填写行号,默认打印所有行
' d ' 删除某一行,比如:2d就是删除第二行
' c ' 改变某一行,比如:'2c Python',代表把第二行的内容变为“ Python ”
' i ' 在某一行前插入,比如:'2i Python',在第二行前插入内容“ Python ”
' a ' 在某一行后追加,比如:'2a Python',在第二行后追加内容“ Python ”
' s ' 在某一行进行字符串替换,如果不填写行号,默认对文中所有满足条件的字符串进行替换
示例1:
打印文件中第二行内容,从下文中可以看到-n参数和p动作一起使用
[root@centos-linux-02 opt]# cat 2.txt
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# sed 2p 2.txt
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# sed -n 2p 2.txt
2 bin:x:1:1:bin:/bin:/sbin/nologin
示例2:
删除第2行与第3行的内容
[root@centos-linux-02 opt]# sed 2,3d 2.txt
1 root:x:0:0:root:/root:/bin/bash
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
示例3:
在第2行后追加一行“ Python ”内容
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# sed '2a Python' 2.txt
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
Python
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
示例4:
在第2行前插入一行内容“ Python ”
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# sed '2i Python' 2.txt
1 root:x:0:0:root:/root:/bin/bash
Python
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
示例5:
把第2行中的内容替换为“ Python ”
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# sed '2c Python' 2.txt
1 root:x:0:0:root:/root:/bin/bash
Python
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
示例6:
把第2行中的字符串“1”替换为字符串“999”
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# sed '2s/1/999/g' 2.txt
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:999:999:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
示例7:
把第2行中的字符串“2”替换成“999”,把第2行中的“1”也替换成“999”
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# sed -e '2s/2/999/g;2s/1/999/g' 2.txt
1 root:x:0:0:root:/root:/bin/bash
999 bin:x:999:999:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
网友评论