# -n选项表示只过滤出匹配的行,搜索字符后面的p表示打印出结果 [root@centos01 test_sed_dir]# sed -n '/root/'p sed_test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@centos01 test_sed_dir]# sed -n '/o\+t/'p sed_test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@centos01 test_sed_dir]# sed -nr '/o+t/'p sed_test.txt # -r选项表示不须要对搜索字符串进行转义 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@centos01 test_sed_dir]# cat -n sed_test.txt |head -n 5 1 root:x:0:0:root:/root:/bin/bash 2 tooost 3 ooooost 4 bin:x:1:1:bin:/bin:/sbin/nologin 5 daemon:x:2:2:daemon:/sbin:/sbin/nologin # 打印第2行 [root@centos01 test_sed_dir]# sed -n '2'p sed_test.txt tooost # 1,5 打印1-5行 [root@centos01 test_sed_dir]# sed -nr '1,5'p sed_test.txt root:x:0:0:root:/root:/bin/bash tooost ooooost bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin # 25行以后的全部行 [root@centos01 test_sed_dir]# sed -n '25,$'p sed_test.txt test03:x:1003:1004::/home/test03:/bin/bash test06:x:1004:1005::/home/test06:/bin/bash test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash # 多个搜索串 [root@centos01 test_sed_dir]# sed -nr '/root|opera/'p sed_test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin #-e 多个过滤匹配 [root@centos01 test_sed_dir]# sed -e '1,5'p -e'25,$'p -n sed_test.txt root:x:0:0:root:/root:/bin/bash tooost ooooost bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin test03:x:1003:1004::/home/test03:/bin/bash test06:x:1004:1005::/home/test06:/bin/bash test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash # 搜索串后加I 表示不区分大小写 [root@centos01 test_sed_dir]# sed -nr '/ROOT/'Ip sed_test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin # 搜索串后加d 表示删除,只列出剩余的行,这时并无删除文件内容 [root@centos01 test_sed_dir]# wc -l sed_test.txt 28 sed_test.txt [root@centos01 test_sed_dir]# tail -n 2 sed_test.txt test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash [root@centos01 test_sed_dir]# sed '1,26'd sed_test.txt test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash # 搜索串后加d,加-i选项,就是针对文件内容进行更改 [root@centos01 test_sed_dir]# sed -i '27,28'd sed_test.txt [root@centos01 test_sed_dir]# tail -n 2 sed_test.txt test03:x:1003:1004::/home/test03:/bin/bash test06:x:1004:1005::/home/test06:/bin/bash [root@centos01 test_sed_dir]# wc -l sed_test.txt 26 sed_test.txt [root@centos01 test_sed_dir]# sed -i '/test02/'d sed_test.txt [root@centos01 test_sed_dir]# sed -n '/test02/'p sed_test.txt # 查找替换,搜索串末尾加s/源串/目的串/g',其中g表明更改查到行的全部匹配串 [root@centos01 test_sed_dir]# sed -n '1,10s/root/rt/g'p sed_test.txt rt:x:0:0:rt:/rt:/bin/bash # 查找使用正则 [root@centos01 test_sed_dir]# sed -nr '1,10s/ro+t/rt/g'p sed_test.txt rt:x:0:0:rt:/rt:/bin/bash # 使用正则交换用:分隔后的第一段和最后一段,其中\3\2\1 分别表示匹配到的第3项、第2项、第1项 [root@centos01 test_sed_dir]# head sed_test.txt root:x:0:0:root:/root:/bin/bash tooost ooooost bin:x:1:1:bin:/bin:/sbin/nologin 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 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt [root@centos01 test_sed_dir]# head sed_test.txt | sed -r 's/([^:]+):(.*):([^:]+) /\3:\2:\1/' /bin/bash:x:0:0:root:/root:root tooost ooooost /sbin/nologin:x:1:1:bin:/bin:bin /sbin/nologin:x:2:2:daemon:/sbin:daemon /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp /bin/sync:x:5:0:sync:/sbin:sync /sbin/shutdown:x:6:0:shutdown:/sbin:shutdown /sbin/halt:x:7:0:halt:/sbin:halt # 把/root进行替换,能够进行转义或者使用别的符号(@、#等)进行划分 [root@centos01 test_sed_dir]# head sed_test.txt | sed -r 's#/root#~root#'g root:x:0:0:root:~root:/bin/bash tooost ooooost bin:x:1:1:bin:/bin:/sbin/nologin 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 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt # 删除全部的字母 [root@centos01 test_sed_dir]# head sed_test.txt | sed -r 's/[a-zA-Z]//'g ::0:0::/:// ::1:1::/:// ::2:2::/:// ::3:4:://:// ::4:7::///:// ::5:0::/:// ::6:0::/:// ::7:0::/:// # 在每一行前加一个字符,例,加***: [root@centos01 test_sed_dir]# head sed_test.txt | sed -r 's/(.*)/***:&/' ***:root:x:0:0:root:/root:/bin/bash ***:tooost ***:ooooost ***:bin:x:1:1:bin:/bin:/sbin/nologin ***: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 ***:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown ***:halt:x:7:0:halt:/sbin:/sbin/halt