您的位置:首页 > 运维架构 > Shell

linux shell 系列 sed 命令基本用法实例-①set命令选项的应用案例

2016-03-15 17:02 573 查看
首先先给大家看一个我写的程序的源码文件msg.c,就以这个文件作为演示,大家可以看到文件的部分内容及对应的行号:

图1



①.以指定行号查看文件对应行的内容

终端输入sed命令:  sed -n ‘1p’ msg.c  //查找msg.c文件第一行内容     

  图2



可以看到图3中红色框选区的显示信息与图2 的第一行数据相同,为排除偶然性,继续给出其他验证案例

补充: -n的作用是除sed命令要求显示的行数据外其他的行数据都不显示,如果我们去掉 -n 参数,sed ‘1p’ msg.c 命令行将显示出msg.c全部的数据,而不是单单只针对 sed的'1p'命令去显示,显示结果图如下: 



②.以行区间查看文件对应行的内容

sed命令:sed -n '5,10p' msg.c //查找msg.c文件中的第5行到第10行的数据并打印出来

执行效果图如下:



通过上图与图1进行对比,sed -n ‘5.10p’ msg.c 所打印出来的数据与图1中的第五行到第十行数据完全相同。

③.通过匹配字符串查看文件对应行的内容

sed命令:sed -n '/stdio/p' msg.c //查找匹配到字符串“stdio”的行数据并打印出来

执行效果图如下:



通过图1可以看到,msg.c 文件中只有第2行#include<stdio.h>中拥有与字符串“stdio”完全匹配的字段。

④.通过-e选项执行多个sed命令

sed命令:sed -n -e '/stdio.h/p' -e ‘/stdio.h/=’ msg.c
//查找匹配到字符串“stdio”的行数据和行号并打印出来

执行效果图如下:



通过图1可以看到,msg.c 文件中只有第2行#include<stdio.h>中拥有与字符串“stdio.h”完全匹配的字段。

需要注意的是sed命令不支持同时携带多个编辑命令的用法,比如将sed -n -e '/stdio.h/p' -e ‘/stdio.h/=’ msg.c改写为sed -n '/stdio.h/p=' msg.c

这样的执行结果如下图所示:



所以如果想要执行多个编辑命令必须使用-e选项分别执行。

⑤.通过a\命令将指定文本追加到指定行后面

sed命令:sed   '/stdio.h/a\look me !’ msg.c//查找stdio.h字符串匹配的行号并将“look
me !”字符串追加到这一行的后面且打印出来

执行效果图如下:



需要注意的是a\的文本追加操作并不会改变文件本身的数据,只是将结果输出到标准输入上,源文件没有任何变化。

⑥.通过-f选项调用sed脚本

sed命令:sed   '/stdio.h/a\look me !’ msg.c//查找stdio.h字符串匹配的行号并将“look
me !”字符串追加到这一行的后面且打印出来

首先我们先写一个脚本文件 test.sed



然后给脚本添加执行权限



最后执行脚本文件



执行效果图如下:



由上图显示可以看出脚本的追加操作成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息