sed使用

作者: 强出头 | 来源:发表于2018-03-01 11:21 被阅读0次

94 sed(上)

sed工具

sed -n '/root/'p 匹配字符串root

[root@localhost grep]#sed -n  '/root/'p passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

sed -n '2'p 打印第2行 sed -n '2,5'p打印2到5行

[root@localhost grep]#sed -n  '2'p passwd 
bin:x:1:1:bin:/bin:/sbin/NOLogin
[root@localhost grep]#sed -n '2,5'p  passwd 
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

sed -nr '/o+t/'p -r表示脱义 \也可以脱义(这里grep和egrep的正则都可以使用)

[root@localhost grep]#sed -nr '/o+t/'p passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost grep]#sed -n '/o\+t/'p passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

sed -n '15,$'p 打印15到最后一行 $表示最后一行

[root@localhost grep]#sed -n '15,$'p  passwd 
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
wsl:x:1000:1000::/home/wsl:/bin/bash
wsl1:x:1001:1001::/home/wsl1:/bin/bash

sed -e '1'p -e '/root/'p -n 先打印第一行再在第一行匹配root字符 -e 多个操作

[root@localhost grep]#sed -e '1'p -e '/root/'p -n passwd 
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

95 sed(下)

sed工具

sed -n '/nologin/'Ip 匹配nologin不区分大小写 I表示不区分大小写

[root@localhost grep]#sed -n '/nologin/'Ip passwd |head -3
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

sed '1,15'd 删除显示的1到15行 不是删除文件里面的

[root@localhost grep]#sed '1,15'd passwd 
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
wsl:x:1000:1000::/home/wsl:/bin/bash
wsl1:x:1001:1001::/home/wsl1:/bin/bash

sed -i '1,15'd 删除文件里的1到15行 -i操作文件

[root@localhost grep]#wc -l passwd
21 passwd
[root@localhost grep]#sed -i '1,15'd passwd
[root@localhost grep]#wc -l passwd
6 passwd

sed -i '/laaa/'d a1.txt 删除文件里的有laaa字符的所有行

[root@localhost ~]# cat a1.txt 
-bash: laaa: 未找到命令
a.txt
-bash: laaa: 未找到命令
a.txt
[root@localhost ~]# sed -i '/laaa/'d a1.txt 
[root@localhost ~]# cat a1.txt 
a.txt
a.txt

删除文件
sed '1,5s/root/rrtt/g' passwd root被替换成了rrtt,这里s表示替换的动作,g表示本行全局替换,使用方法和vim里的如出一辙

[root@localhost grep]#cat passwd |head -5
root:x:0:0:root:/root:/bin/bash
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
[root@localhost grep]#sed '1,5s/root/rrtt/g' passwd |head -5
rrtt:x:0:0:rrtt:/rrtt:/bin/bash
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
[root@localhost ~]# cat passwd1|head -10
root:x:0:0:root:/root:/bin/bash
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# sed -r '1,10s/ro+/p/g' passwd1 |head -10
pt:x:0:0:pt:/pt:/bin/bash
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/pt:/sbin/nologin

前后调换,(.*)为贪婪匹配,会匹配到最后一个:

[root@localhost ~]# head -10  passwd1  |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
/bin/bash:x:0:0:root:/root:root
/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
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
[root@localhost ~]# head -10 passwd1 
root:x:0:0:root:/root:/bin/bash
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

带斜杠/的需要区分开

[root@localhost ~]# head -4 passwd1 |sed 's@/sbin/nologin@123@g'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:123
daemon:x:2:2:daemon:/sbin:123
adm:x:3:4:adm:/var/adm:123

删除所有英文字母

[root@localhost ~]# head -4  passwd1 |sed 's/[a-zA-Z]//g'
::0:0::/://
::1:1::/://
::2:2::/://
::3:4:://://

所有行前面加字母

[root@localhost ~]# head passwd1 |sed -r 's/(.*)/aaa:&/'
aaa:root:x:0:0:root:/root:/bin/bash
aaa:bin:x:1:1:bin:/bin:/sbin/nologin
aaa:daemon:x:2:2:daemon:/sbin:/sbin/nologin
aaa:adm:x:3:4:adm:/var/adm:/sbin/nologin
aaa:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
aaa:sync:x:5:0:sync:/sbin:/bin/sync
aaa:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
aaa:halt:x:7:0:halt:/sbin:/sbin/halt
aaa:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
aaa:operator:x:11:0:operator:/root:/sbin/nologin

相关文章

  • Linux awk和sed的用法

    sed工具简介 用法:sed [-nefri] 动作参数:-n:使用安静模式(Silent)模式,一般在sed的...

  • sed使用

    sed使用方法

  • 2019-07-24 课堂笔记sed命令

    昨天回顾 使用grep命令取IP地址 今日总结 sed执行原理sed执行原理.jpg sed [参数] '条件指令...

  • LINUX sed命令的使用

    LINUX sed命令的使用 命令格式 sed常用命令 sed替换标记 sed元字符集 已匹配字符串标记& ⼦串匹...

  • 六.Linux之sed命令

    sed使用方式 1.在Shell中输入: 脚本格式: 2.用sed -f命令调用sed脚本文件 3.直接执行sed...

  • sed 通配符应用

    " . " :表示匹配一个字符 " .* " :表示匹配任意字符 sed删除指定行 sed通配符使用 sed多...

  • awk和sed指令入门

    sed偏向于编译文档,awk偏向与分析文本 sed使用方式 增加 sed -i "2a line 3 " test...

  • sed使用

    1.sed为什么叫sed sed是stream editor的缩写,中文称之为 流编辑器。sed命令是一个面向行处...

  • sed使用

    94 sed(上) sed工具 sed -n '/root/'p 匹配字符串root sed -n '2'p ...

  • SED使用

网友评论

      本文标题:sed使用

      本文链接:https://www.haomeiwen.com/subject/qkrpaxtx.html