【Linux】文本处理工具sed


1 sed简介

sed是一种在线编辑器、行编辑器,一次处理一行内容,在处理时,把当前处理的行为存储在临时缓冲区中,该缓冲区为模式空间(pattern space),接着用sed命令处理缓冲区中的内容,处理完毕后,把缓冲区的内容送到标准输出,然后接着去处理下一行,重复完成的操作,直至文件末尾;sed处理的整个过程中,对象文件的内容并没有改变,除非使用重定向来存储处理后的结果。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作过程。

sed和文本处理工具vim、grep是有区别的,vim是一种交互式的文本编辑工具,而sed是一种非交互式的文本编辑器(通过给定的条件自动逐行去处理文件);grep虽然也是一种流式的文本处理工具,但grep是用来检索条件关键字的,而sed却是搜索匹配处理文本工具。

sed所具有的功能有:数据的替换、删除、新增等,这里的数据可以是一些关键字,也可以是一些特定的行。


2 sed用法

sed的语法结构:
sed [OPTION] ... {script} [input-file] ... [actions]

[OPTION]
	-r:支持扩展的正则表达式
	-n:静默模式
	-e script1 -e script2 -e script3:指定多脚本运
	-f /path/to/script_file:从指定的文件中读取脚本并运行
	-i:直接修改源文件

sed的地址定界(抽取的域)

	#:#表示数字,指定行
	$:最后一行
	/regexp/:任何能够被regexp所匹配到的行
	\%regexp%:同上,只不过换作%为regexp边界符
	startline,endline:
		#./regexp/:从#开始,到第一次被/regexp/所匹配到的行结束,中间所有的行
		#1,#2:从#1行到#2行
		/regexp1/,/regexp2/:从第一次被/regexp1/匹配到的行开始,到第一次被/regexp2/匹配到的行结束,中间所有的行
		#,+n:从#行开始,一直到向下的n行
	first-step:指定起始行,以及步长

sed的编辑命令

d:删除模式空间中的行;
=:为模式空间中的行打印行号;
a  \text:在行号后面追加文本,支持使用\n实现多行追加;
i \next:在行面前插入文本,支持使用\n实现多行插入;
c \next:用text替换匹配到的行;
p:打印模式空间中的行;
s/regexp/replacement/:替换由regexp所匹配到的内容为replacement(支持使用其他分隔符如:s@@@。s###;条件是该分隔符在后面的模式中没有出现过),对于替换还有两个后选项g和i,分别表示如下:
	g:全局替换;
	- i:不区分大小写
w /path/to/somefile:把指定的内容另存至/path/to/somefile路径所指定的文件中;
r /path/from/somefile:在文件的指定位置插入另一个文件的所有内容,完成文件合并;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值