继上一篇《Linux中的awk命令》后,再来一篇Linux中的sed命令,这两篇文章都是对之前《Linux系统常用的基本命令》的补充,因为水平有限,文章中难免会出现错误,如果不当之处,欢迎大家指出。一起来看一下吧~
一、选项参数说明
sed命令的主要作用是编辑一个或多个文件,减少对文件的反复操作,我们可以使用sed --help命令来查看一下他的选项参数:
二、基本用法
1、在测试文件test下新增一行,并输出到标准输出。
现有如下测试文件:
使用如下命令实现:
sed -e 4a\newLine test
2、以行为单位进行删除
(1)删除2-5行内容,并打印出当前行号
nl ./test | sed '2,5d'
需要注意的是,sed后面同awk一样,也需要使用单引号,这里的d就是删除的意思,其他的动作字母标示如下:
a:新增,a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行);
c:取代,c的后面可以接字串,这些字串可以取代 n1,n2 之间的行;
d:删除,d后面通常不接任何东西;
i:插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p:打印,通常p会与参数sed -n一起运行;
s:取代,有替换的作用,通常这个s的动作可以搭配正规表示法。
(2)只删除第二行数据
nl ./test | sed '2d'
(3)删除第二行到最后一行的数据
nl ./test | sed '2,$d'
3、以行为单位进行增加
(1)在第二行后加一行
nl ./test | sed '2a newline'
(2)在第二行前加一行
nl ./test | sed '2i newline'
(3)增加两行以上,这里需要注意的是,增加两行以上的数据,每行之间要用\进行标识,如下:
4、以行为单位的替换:将2-4行替换成newdata
nl ./test | sed '2,4c newdata'
5、以行为单位进行打印:将2-4行的打印出来
nl ./test | sed -n '2,4p'
6、以行为单位搜索并显示:搜索文件中的df
nl ./test | sed '/df/p'
这里除了会打印出匹配的行之外,还会将原有的数据一并输出,如果只想输出匹配的行,可以加上选项参数-n。
nl ./test | sed -n '/df/p'
7、以行为单位搜索并删除:搜索并删除df
nl ./test | sed '/df/d'
8、以行为单位搜索并执行命令:搜索df将dsjfhs替换成hello
nl ./test | sed -n '/df/{s/dsjfhs/hello/;p;q}'
值得注意的是,这里每条命令之间要用分号进行区别,最后的q是退出的意思。
你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题。