0

0

一文读懂shell编程三剑客之一的sed命令

齐天大圣

齐天大圣

发布时间:2020-09-17 17:27:45

|

2219人浏览过

|

来源于php中文网

原创

作为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选项来完成

Pixie.haus
Pixie.haus

AI像素图像生成平台

下载
# 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\+//g'
172.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\+.*//g'
172.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 ……

相关专题

更多
C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

29

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

11

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

8

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

55

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
尚观shell视频教程
尚观shell视频教程

共8课时 | 1.7万人学习

Linux开发篇视频教程
Linux开发篇视频教程

共18课时 | 4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号