sed的常见用法

sed工具
sed(stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于shell脚本中,用以完成各种自动化处理任务。

sed的工作流程主要包括读取、执行和显示三个过程。

读取:sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,patternspace) 。
执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed命令将会在所有的行上依次执行。
显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

常见的 sed命令选项主要包含以下几种。
-e 或–expression=:表示用指定命令或者脚本来处理输入的文本文件
-f 或–file=:表示用指定的脚本文件来处理输入的文本文件。
-h或–help:显示帮助。
-n、 --quiet或silent:表示仅显示处理后的结果。
-i.bak:直接编辑文本文件。
-r,-E使用扩展正则表达式
-s将多个文件视为独立文件,而不是单个连续的长文件流

“操作"用于指定对文件操作的动作行为,也就是sed的命令。通常情况下是采用的”[n1 [ , n2]]“操作参数的格式。n1、n2是可选的,代表选择进行操作的行数,如操作需要在5~20 行之间进行,则表示为"5,20动作行为”。常见的操作包括以下几种。

a:增加,在当前行下面增加一行指定内容。
c:替换,将选定行替换为指定内容。
d:删除,删除选定的行。
i:插入,在选定行上面插入一行指定内容。
p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有ASCII 码输出。其通常与"-n"选项一起使用。
s:替换,替换指定字符。
y:字符转换。

输出符合条件的文本( p)

[root@localhost ~]# sed -n '3p' test.txt//输出第3 行
[ root@localhost ~]# sed -n '3,5p' test.txt//输出3到5行
[ root@localhost ~]# sed -n 'p;n ' test.txt//输出所有奇数行,n表示读入下一行资料[root@localhost ~]# sed -n 'n;p' test.txt//输出所有偶数行,n表示读入下一行资料
[root@localhost ~]# sed -n '1,5(p;n}' test.txt //输出第1到5行之间的奇数行(第1、3、5行) 
[root@localhost ~]# sed -n '10,${n;p}' test.txt //输出第10 行至文件尾之间的偶数行
[root@localhost ~]# ifconfig ens33 | sed -n 2p#直接显示第二行内容

在执行"sed -n '10,${n;p} ’ test.txt"命令时,读取的第1行是文件的第10 行,读取的第2行是文件的第11行,依此类推,所以输出的偶数行是文件的第11行、13行直至文件结尾,其中包括空行。

以上是sed 命令的基本用法,sed命令结合正则表达式时,格式略有不同,正则表达式以"/"包围。例如,以下操作是sed命令与正则表达式结合使用的示例。

[ root@localhost ~]# sed -n '/the/p' test.txt
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值