一文读懂hell编程三剑客之一的ed命令

2025-04-28 10:00:02 5
  • 收藏
  • 管理
    作为shell编程三剑客之一的sed,重要程度不言而喻。sed是一个流编程器,每次处理一行,处理完后再接着处理下一行,它支持正则,功能非常的强大。但sed比一般的命令复杂一些,选项繁多,想要掌握它是需要花点功夫的。下面我们通过众多的例子来看看这个强大的sed命令的作用吧! 语法格式:sed [选项] [动作] 常用选项如下: -n:sed默认会输出所有stdin内容,但加上该选项后,只显示经过sed处理过的行。 -e :允许在同一行里执行多个动作 -f:从一个文件中读取动作 -i:直接修改文件而不是输入到屏幕上(危险) 动作中的参数及太多了,下面列一下: a:在匹配行下面加入一行 c:将匹配的行修改新的内容 d:删除匹配的行 i:在匹配行前加入内容 p:打印 s:替换匹配行的内容 范例一:打印/etc/passwd文件的第5-10行 复制# sed -n 5,10p /etc/passwd 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 范例二:删除/etc/passwd文件的第2行,第2到10行 复制# cat -n /etc/passwd | sed 2d | sed 5,10d 除了上面的方法,我们还可以用-e选项来完成 复制# cat -n /etc/passwd | sed -e 2d -e 5,10d 范例三:获取服务器ip地址 这个案例非常的棒,建议大家仔细看看 复制# ifconfig eth0 eth0: flags=4163 mtu 1500 inet 172.26.9.143 netmask 255.255.240.0 broadcast 172.26.15.255 ether 00:16:3e:0a:01:ad txqueuelen 1000(Ethernet)…… 我们需要的是172.26.9.143。 第一步,获取我们想要处理的行 复制# ifconfig eth0 | sed -n /.*inet/p inet 172.26.9.143 netmask 255.255.240.0 broadcast 172.26.15.255 第二步,将不需要的信息给替换位空白字符 复制# ifconfig eth0 | sed -n /.*inet/p | sed s/.*inet\\\\s\\\\ //g172.26.9.143 netmask 255.255.240.0 broadcast 172.26.15.255 接下来把ip地址后面的全部替换位空就行了 复制# ifconfig eth0 | sed -n /.*inet/p | sed s/.*inet\\\\s\\\\ //g | sed s/\\\\s\\\\ .*//g172.26.9.143 下面我们来说说上面的例子,首先第一步我们使用了-n和p来获取我们想要的行。然后,我们将不需要的信息进行过滤,需要注意的时,正则中\\\\s 表示至少匹配一个空格,但在这里需要在加号前使用转义字符\\\\。 范例四 最后一个范例,我给出我昨天一个真实案例。需求是这样的,获取一段文本中的url地址,但不需要前面的http://。部分文本内容如下: 复制 北京  上海  天津  重庆山东:   济南  青岛 下面我们分几步去完成该需求,首先,将不含url地址的行全部过滤 复制# sed -n /http:/p a.txt 然后,将不需要的信息全部替换位空白字符即可。先把http://及之前字符全部删除 复制sed -n /http:/p a.txt | sed s/.*http:\\\\/\\\\///g ,接着把双引号及之后字符全部删除 复制# sed -n /http:/p a.txt | sed s/.*http:\\\\/\\\\///g | sed s/".*//g 现在屏幕输出的内容如下 haikou.hellozx.com sanya.hellozx.com kunming.hellozx.com dali.hellozx.com xining.hellozx.com yinchuan.hellozx.com wulumuqi.hellozx.com ……
    上一页:一文读懂简单工厂、工厂方法、抽象工厂 下一页:一文讲解WordPre插件怎么查找并安装
    全部评论(0)