sed

本文介绍sed流编辑器的基本用法及多个实用示例,包括文本过滤、替换、添加及直接修改文件等操作,适用于初学者快速掌握sed命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.功能:过滤和翻译文本的流编辑器

  sed = stream editor

二.选项

  -n:不输出

  -e script:将script加到命令中执行

  -f script_file :将script_file的内容加到命令中执行

  -r :使用可扩展的正则表达式

  -s : --separate

  -i :-in-place :直接对文件进行修改

三.使用地址范围

  可以使用一个地址范围对文本进行操作

例1:删除第2~5行

首先将/etc/passwd复制到当前目录下,查看文件的第2~5行,如下:

运行  nl passwd |sed '2,5d'后,会输出如下:

可见,第2~5行被删除了。但是,less passwd可以看到passwd文件的2~5行还在,并没有删除,可见sed并没有改变文件

 例2:添加一行

运行 nl passwd | sed '2a drink tea' 后输出:

例3:添加两行

运行 nl passwd | sed '2a Drink tea or... \

> drink bear?'

 例4:替换

运行 nl passwd | sed '2,5c NO 2-5 number',后输出

可见,第2~5行被替换为 NO 2-5 number。

例5:输出指定行 

    运行nl passwd | sed -n '5,7p',将输出第5~7行,如下:

例6:使用sed从ifconfig的输出中得到ip地址

6-1:运行 ifconfig eth0,输出网卡信息:

6-2:使用grep选取指定行

运行 ifconfig eth0 | grep 'inet ',得到了包含ip地址的那一行

6-3:删除ip地址前面的字符

运行 ifconfig eth0 | grep 'inet ' | sed 's/^.*地址://g',后输出:

可见 'inet 地址'这几个字符被清除掉了

6-4:删除ip地址后面的字符

给上一条命令后面加上 sed 's/广播.*$//g',运行输出为:

可见,只剩下我们想要得ip地址了。

例7:获取manpath.config文件中包含MAN字符,并且不是注释(即不以#开始)的行

7-1:删除注释行

运行 cat /etc/manpath.config | grep 'MAN'| sed 's/#.*$//g'

7-2:删除空白行

再上一条命令后面加上  sed '/^$/d',即可删除空白行:

例8:直接修改文件

前面的例子都没有对源文件进行任何修改。怎样利用sed直接修改源文件呢? 加上-i 就可以了。

首先运行 sed -i '2a hello world' passwd,
再运行 nl passwd:

 

 

 

转载于:https://www.cnblogs.com/woshizyl/archive/2012/12/17/2822168.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值