sed

什么是sed

sed是stream editor的缩写,是一个非交互式的文本编辑器

sed是基于行的

sed逐行读入,逐行操作

sed只是将其处理结果送至stdout,因此不会修改任何输入文件


sed的一般格式

sed [option] '[sed command]' [file]
1.option即sed的参数,常用的有:

  • -n :使用安静模式,只将经过sed特殊处理的行(而非全部行)送至stdout
  • -e :直接在命令行模式上进行sed的操作编辑
  • -f :将sed的操作写在一个文件内,-f filename可以执行filename里的sed操作
关于-n和-e的具体涵义,还需要进一步研究
2.sed command是sed的主体部分
首先要确保sed command被单引号包括,以避免与shell自带的meta相冲突
sed command的一般结构为:
[地址][操作]
  • 地址:指定sed需要操作哪些行,有四种类型
    • n :指定行号
    • n,m :指定行号范围
    • /.../ :正则表达式匹配(匹配的不是行号,而是行的内容)
    • /.../,/.../ :正则表达式匹配范围(事实上在指定范围时,指定行号和正则表达式匹配可以混用,如n,/.../)
  • 操作:以“地址”指定的行为目标所进行的处理,主要有
    • d :删除整行
    • p :输出至stdout
    • s/str1/str2/或s/str1/str2/g :将str1替换为str2,不加g表示只替换每行的第一个匹配,加g表示全部替换
    • i str :将str插入至指定行的上一行
    • a str :将str插入至指定行的下一行
    • c str :将指定行替换为str
需要牢记的几点:
1)地址不是强制要求的,缺省情况下sed将对每一行都进行操作
2)sed命令中可以有多个sed command,用分号进行分隔,形如:
sed [option] '[sed command 1]; [sed command 2]' [file]
3)地址和操作之间没有空格
4)sed command中,可对同一地址进行多个操作,用{}包括并用空格分隔,形如:
[地址]{[操作1] [操作2]}
3.综上所述,sed命令的完整形式为
sed [option] '[地址1]{操作1 ... 操作n}; ...; [地址m]{操作1 ... 操作n}' [file]

其他
1.$在地址中出现时,表示文件的最后一行
2.可以用!对地址取反,如
sed -e '$!d' data  #表示删除除最后一行外的所有行
3.sed可用/(和/)对s/.../.../内进行编号-指定-替换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值