三剑客之Sed-----一些基本语法

本文介绍了Sed作为一种流编码器,主要用于文本处理,它将每行内容存储在模式空间中,处理后输出。Sed命令默认只读不写,基本语法为`sed -option 'action' stdin`。文章列举了如a、c、d、i、p、s等常用操作,并解释了-n等选项的作用。

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

Sed:一种流编码器,主要用来作文本处理,可以配合正则使用。处理文本原理:处理文本时,把当前处理的行存储在临时缓存区中,称为‘模式空间’(pattern space),接着根据命令处理缓冲区中的内容,处理完后,把缓冲区中的内容送往屏幕,然后接着处理下一行,循环往复,直到文本结束,整个过程不改变原文本内容,除非调用改变文本内容的命令

sed命令默认只对源文件作read操作,不作write操作

基本语法 :sed -option ‘action’ stdin

sed.txt
本文的所有操作都参照上图文本进行。
语法格式举例:sed -n ‘1,3p’ sed.txt 其中 -n 代表option,即选项,‘1,3p’ 就是动作,即进行的操作
上述命令的意思是 将 sed.txt(后面一概称文本)的第一到三行输出。打印结果:

常用的action

  • a:(append,猜的)在指定行下一行输出指定内容。例:1,3a 表示在1-3行的下一行输出内容。不写行号,默认所有行,n(num),代表第n行,$ 代表最后一行/含蓄/ 表示包含字符串 “含蓄”的所有行,该命令表示在所有包含 含蓄 的行的下一行输出 ‘翠花’注意 sed 命令执行顺序 从左向右。action前面的内容表示对文本内容进行筛选,aciton后面的内容表示aciton操作的内容。例:1,3a 表示 筛选1-3行;a 1,3 表示 所有行的下一行输出 ‘1,3’。

  • c:(change,猜的)将指定行进行替换 例:将包含‘bbb’的所有行替换为 ‘风行者’

  • d :(delete,个人猜的)将指定行删除,d后面不跟内容 例:删除最后一行

  • i:(insert,猜的)指定行前面输出指定内容 例:在包含 ‘bbb’ 的所有行的上一行输出 ‘奈文摩尔’

  • p:(paste,猜的)粘贴指定行,p后面不跟内容 例:从第一行到 第一个包含‘含蓄’的行,之间的每行,先输出该行,再paste该行

  • s:(substitute,猜的)替换 例: s/a/b/ 将行内的 第一个a 替换为b ,s/a/b/g 将行内所有的a替换为b将行内的 ‘含蓄’ 替换为 ‘矜持’

选项

  • n:一般sed的语法,会默认输出来自stadin的所有内容,此选项会取消默认输出,只输出做过处理的内容。例:不做处理,默认输出取消默认输出,因为没作处理,所以没有内容输出
  • i:将修改写入原文件,不作输出。操作源文件,删除最后一行,不作输出。此时源文件内容已被修改。
  • e:多重编辑。 sed 命令逐行执行,注意前后命令顺序不同,结果也会不同
  • f:格式:sed -f script stdin 可以建一个脚本script ,将命令写在script里面(脚本里面不能写选项,命令不带引号),按照前面格式对stdin进行处理。
  • 好啦,暂时先总结到这儿了,水平有限,不当之处,还请各位看客多多指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值