sed命令使用

目录

一、sed概述

二、sed命令使用格式

1、sed语法

 2、sed选项

3、 sed命令

4、sed元字符集 

三、sed实例

        1、替换操作

2、删除操作

3、新增操作

4、数据查找并显示

5、多点编辑 

6、从文件读入

7、写入文件 


一、sed概述

数据流编辑器,默认不编辑原文件,仅对模式空间中的数据做处理。而后,处理结束后,将模式空间打印至屏幕。

二、sed命令使用格式

1、sed语法

sed [options] 'command' file   

 2、sed选项

选项选项描述
-n静默模式,不在默认显示模式空间中的内容
-i直接修改原文件 
-e可以同时执行多个脚本,比如-e SCRIPT -e SCRIPT..... 
-f例:sed -f /path/to/script/ file。以选项中指定的脚本文件来处理文本文件
-r 表示使用扩展正则表达式
-V--version显示版本信息

3、 sed命令

命令命令描述
a新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d删除,因为是删除啊,所以 d 后面通常不接任何东东
i

插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s

取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是了

4、sed元字符集 

^匹配行开始,如:/^sed/匹配所有以sed开头的行
$匹配行结束,如:/sed$/匹配所有以sed结尾的行
.匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d
*匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行
[]匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed
[^]匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行
\(..\)匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers
&保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**
\匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行
x\{m\}重复字符x,m次,如:/0\{5\}/匹配包含5个0的行
x\{m,\}重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行
x\{m,n\}重复字符x至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行;


三、sed实例

示例文件如下图所示


 

 1、替换操作

sed 's/file/data/' test.txt       


sed -n 's/file/data/p' test.txt    #-n选项和p命令一起使用,表示只显示修改过的行

sed '2,20c 替代2-20行之间的数据' test.txt    #将2-20行的内容替代为替代2-20行之间的数据

 

 

sed -i 's/file/data/g' test.txt    #使用选项-i直接修改原文件,命令g全局替换

#一行中从第几处开始替换,可以使用Ng,N代表数字。如下示例:
[root@localhost ~]# echo werwerwer | sed 's/we/11/3g'
werwer11r

 2、删除操作

#删除第5行,test.txt文件中第5行为Google
sed '5d' test.txt

 如下图,第5行删除

 

#删除第5至最后一行
sed '5,$d' test.txt

 

#删除以#开头的行
sed '/^#/d' test.txt

3、新增操作

#在test.txt文件第5行的下面增加一行
sed 5a'jfskfsjajddjsajslajfd' test.txt

 

 

#在第5行前面添加数据
sed 5i'qereqqwrdffeqwred' test.txt

#在某一个字符后面添加数据
sed 's/alibab/& mayun/' test.txt

 4、数据查找并显示

#查找以IP开头的行,并打印
sed -n '/^IP/p' test.txt

 

查找从第5行开始到第一个#号开头的所有行
sed -n '5,/^#/p' test.txt

 

5、多点编辑 

 

#删除1到5行,并将以IP开头的行替换为ipaddr
sed -e '1,5'd -e 's/^IP/ipaddr/g' test.txt

 6、从文件读入

#添加一段数据在1.txt中,将1.txt中的数据添加到匹配到的行后面
[root@localhost ~]# echo -e "test\nwww\ntwety\ntest" > 1.txt
test
www
twety
test
#将1.txt文件的内容,读入在alibaba的行后面
[root@localhost ~]# sed '/alibaba/r 1.txt' test.txt

 

7、写入文件 

#将1.txt文件中包含test行的内容,写入在2.txt文件中
[root@localhost ~]# sed  '/test/w 2.txt' 1.txt

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值