shell-sed 用法

什么是sed

sed全名叫stream editor,流编辑器,用程序的方式来编辑文本

2. sed处理原理

sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。

具体过程如下:

首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间 pattern space)然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。注1:sed读入一行,会去掉尾部换行符(但会保留$),存入pattern space,然后执行编辑命令

注2:sed与shell一致,双引号内的内容可以转义,单引号中的内容都被原样输出

3. sed命令和选项

4. sed常用命令

4.1 基础

“$"符号,表示最后一行关于地址:地址是一个数字,则表示行号,具体示例如下:

4.2 替换 —— s命令

4.3 整行插入 —— i命令(insert)a命令(append)

4.4 删除 —— d命令

4.5 针对特定的行进行替换 —— s命令

4.6 整行替换 —— c命令

4.7 循环

示例1:

解析:

:loop(该循环名称可以自定义比如:a) —— 表示sed进入循环,逐行将文本读入Pattern Space

N —— 这里就是循环体里面所做的操作(当然我们也可以进行其他操作)N表示将文本的下一行追加到Pattern space,产生一个新行。(在使用N的时候两行之间的$会取消)

$ —— 判断循环是否结束的条件;这里的$表示如果遇到最后一行则退出循环(当然也可以其他条件)

!bloop —— 循环结束标志,sed遇到最后行将退出循环否则返回loop(进入循环的标志如果定义的是:a,那么退出循环的标志就是!ba)

最后针对Pattern Space中的内容执行替换操作,s将回车(\n)替换成制表符(\t)

示例2:两行合并为一行(读入一行之后,在将下一行追加到pattern space,然后执行替换)

示例3:

看完之后头大,不仅长,而且有很多不认识的字符组合,别着急,一句一句的看:

/afd_dsp_service_0/ —— 找出文件中包含afd_dsp_service_0的行,并对匹配的行做后续操作命名

{} —— 内代表的是一组按照顺序执行的命令

:a —— 表示sed进入循环,逐行将文本读入Pattern Space;a表示循环名称,改名称也可以自定义比如:loop

N —— 这里就是循环里面所做的操作(当然我们也可以进行其他操作)N表示将文本的下一行追加到Pattern space,产生一个新行。(在使用N的时候两行之间的$会取消)

/service : bns\s:./!ba —— 循环结束的条件,匹配到 service : bns\s:. 之后,执行 !ba,!ba就是结束循环的意思;如果进入循环的时候定义的标签是:loop,那么结束循环就是!bloop

s/service:*.*/service:list:\/\/%s/g —— 针对读到Pattern space中的内容,执行替换操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早日实现财富自由-2025

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值