文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

sed命令的使用方法有哪些

2023-06-27 21:49

关注

本篇内容主要讲解“sed命令的使用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sed命令的使用方法有哪些”吧!

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。

sed命令的使用方法有哪些

sed用法

使用sed可以实现grep的大部分功能,而且还可以查找替换。

语法:

sed [options] ‘command’ filename

sed [options] -f scriptfile filename

Options:

-n:-n选项和p命令一起使用表示打印

-e:等价于–expression,多点编辑,在一行执行多条命令

用sed实现匹配(grep)功能=打印有root字符串的行

[root@cham2 sed]# sed -n '/root/'p test.txtroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[root@cham2 sed]# sed -nr '/r+o/'p test.txtroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologinsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologin[root@cham2 sed]# sed -nr '/o*t/'p test.txtroot:x:0:0:root:/root:/bin/bashshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halo1t:/sbin:/sbin/haltoperator:x:11:0:operator:/root:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

忽略大小写(I)

[root@cham2 sed]# sed -n '/nologin/'Ip test.txtbin:x:1:1:bin:/bin:/sbin/NOLOGINdaemon:x:2:2:daemon:/sbin:/sbin/nologinad11om:x:3:4:ad1om:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spoool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spoooooool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologin

打印指定行(p)

[root@cham2 sed]# sed -n '2'p test.txtbin:x:1:1:bin:/bin:/sbin/NOLOGIN[root@cham2 sed]# sed -n '2,5'p test.txtbin:x:1:1:bin:/bin:/sbin/NOLOGINdfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345222222:r.o:dfdsfdsgdaemon:x:2:2:daemon:/sbin:/sbin/nologin[root@cham2 sed]# sed -n '15,$'p test.txtnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologin

-e选项允许在同一行里执行多条命令(把第一行打印出来并匹配bus)

[root@cham2 sed]# sed -e '1'p -e '/bus/'p -n test.txtroot:x:0:0:root:/root:/bin/bashsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologin[root@cham2 sed]# sed -e '1'p -e '/root/'p -n test.txtroot:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin

说明 “sed -e ‘1’p -e ‘/bus/’p -n test.txt”该命令的意思是:打印第一行,同时也打印出匹配有‘bus’的行。当打印的内容和匹配的内容相同时,会分别显示,即:两个命令同时进行但相对独立。

删除指定行(d)

[root@cham2 sed]# sed '1,10'd test.txtmail:x:8:12:mail:/var/spoooooool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologin[root@cham2 sed]# sed '1,18'd test.txtpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologin

注: 这种方法并不会删除文件的内容,知识打印在屏幕上的内容删除了指定行。那么如何直接删除文件中指定的内容呢?如下:

[root@cham2 sed]# wc -l test.txt23 test.txt[root@cham2 sed]# sed -i '1,20'd test.txt[root@cham2 sed]# wc -l test.txt3 test.txt[root@cham2 sed]# cat test.txtpostfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologin[root@cham2 sed]# sed -i '/SSH/'d test.txt[root@cham2 sed]# cat test.txtpostfix:x:89:89::/var/spool/postfix:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologin

查找替换(s) 类似于vim中的查找替换

[root@cham2 sed]# sed '1,10s/root/toor/g' test.txttoor:x:0:0:toor:/toor:/bin/bashbin:x:1:1:bin:/bin:/sbin/NOLOGINdfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345222222:r.o:dfdsfdsgdaemon:x:2:2:daemon:/sbin:/sbin/nologinad11om:x:3:4:ad1om:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spoool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halo1t:/sbin:/sbin/haltmail:x:8:12:mail:/var/spoooooool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologin此处如果不使用head命令,将会显示test.txt全部内容。[root@cham2 sed]# sed '1,10s/root/toor/g' test.txt | head -3toor:x:0:0:toor:/toor:/bin/bashbin:x:1:1:bin:/bin:/sbin/NOLOGINdfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345[root@cham2 sed]# cat test.txt | head -3root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/NOLOGINdfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345

替换每行第一个字符串和最后一个字符串的位置:

[root@cham2 sed]# head -3 test.txtroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/NOLOGINdfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345[root@cham2 sed]# head -3 test.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'/bin/bash:x:0:0:root:/root:root/sbin/NOLOGIN:x:1:1:bin:/bin:bin325345345:1241124:jksdfhdskjf:sfdsf:rao:dfsdfdsfsdfs

说明: 小括号内的字符串可以用反斜杠跟数字组合按顺序来代替。

在每一行行首添加指定字符:

[root@cham2 sed]# head -3 test.txt | sed -r 's/(.*)/AB:\1/'AB:root:x:0:0:root:/root:/bin/bashAB:bin:x:1:1:bin:/bin:/sbin/NOLOGINAB:dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345[root@cham2 sed]# head -3 test.txt | sed -r 's/(.*)/AB:&/'AB:root:x:0:0:root:/root:/bin/bashAB:bin:x:1:1:bin:/bin:/sbin/NOLOGINAB:dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345

说明: 在此&代表前面括号中的内容=“\ 1”

到此,相信大家对“sed命令的使用方法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯