shell编程中sed命令的作用是什么,具体怎样应用
Admin 2022-06-20 群英技术资讯 1088 次浏览
这篇文章主要讲解了“shell编程中sed命令的作用是什么,具体怎样应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shell编程中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<UP,BROADCAST,RUNNING,MULTICAST> 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://。部分文本内容如下:
<td width=820> <a href=http://beijing.hellozx.com onclick="co('beijing')"><font color="red">北京</font></a>
<a href=http://shanghai.hellozx.com onclick="co('shanghai')"><font color="red">上海</font></a>
<a href=http://tianjin.hellozx.com onclick="co('tianjin')"><font color="red">天津</font></a>
<a href=http://chongqing.hellozx.com onclick="co('chongqing')"><font color="red">重庆</font></a></td></tr>
<tr><td width=80 height=30 align=right>
<b><font style="font-size:14px;">山东</font>:</b> </td><td width=820>
<a href="http://jinan.hellozx.com" onclick="co('jinan')"><font color=red style="font-size:14px;">济南</font></a>
<a href="http://qingdao.hellozx.com" onclick="co('qingdao')"><font color=red style="font-size:14px;">青岛</font></a>下面我们分几步去完成该需求,首先,将不含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 ……
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
划分方法:1、利用parted命令分区,语法为“parted 划分2t分区的路径”;2、利用“mkfs.ext4 分区路径”格式化刚划分的分区;3、利用“mount 路径/mnt”挂载该分区到“/mnt”即可。
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。
vim中的保存退出命令是wq。具体方法:首先按i键进入插入模式;然后编辑文件;接着按esc键进入命令行模式;最后输入【:wq】即可保存文件并退出。
Centos7安装vsftpd (FTP服务器)
linux创建文件失败的原因:1、当前目录对应的磁盘空间不足;在某个目录下创建文件时,实际上是在这个目录对应的磁盘上操作,如果这个磁盘已经满了,自然就创建失败。2、inode不足;由于一个文件对应一个inode,当磁盘里的小文件过多时,就会出现block数量还很多,但是inode分配完了,也就是空间还很多,但是也无法创建,那是因为创建文件时,申请inode号失败。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008