Linux命令备忘实例(14)——sed

sed是UNIX下非常重要的文本处理工具,是stream editor(流编辑器)的缩写。这个命令配合正则表达式能够处理非常强大的文本操作功能。其中众所周知的用法就是文本替换。

1.概览

sed [option] 'script'/scriptfile  inputfile

这里写图片描述
sed可以替换给定文本中的字符串,利用正则表达式进行匹配。

2.实例特性

1.基本替换

$ sed 's/pattern/replace_string' inputfile

2.原文件替换

使用-i选项,可以将替换结果应用于原文件,有很多使用替换后进行重定向的方式来进行,其实可以直接使用这个选项一步到位。

sed -i 's/text/replace' inputfile

3.全局替换

默认情况下,sed只会每次读取文件的一行,然后找到匹配的第一处内容,然后进行替换。如果需要替换所有匹配的内容,那么需要使用g选项。

sed  's/pattern/replace/g'  inputfile
$ echo "this thisthisthis" | sed 's/this/THIS/g'
THIS THISTHISTHIS

如果需要指定从匹配的第N处开始替换,可以使用如下的方式进行:

sed  's/pattern/replace/3g'  inputfile
$ echo "this thisthisthis" | sed 's/this/THIS/2g'
this THISTHISTHIS

4.其他

-f选项可以使用一个脚本文件来进行替换,-r选项可以指定使用扩展的正则表达式,-s使用多个文件时,每个文件视为单独文件而不是一个整体文件。-u不使用文本流的缓冲。-z使用空白字符来分割每一行。

3.扩展

1.移除空白行

正则表达式后的d选项用来指定删除匹配的内容。

$ sed '/^$/d' file

2.已匹配字符串标记

在sed中,使用&标记已经匹配到的字符串,这样可以在替换字符串中使用已匹配到的内容。

$ echo "this is an example" | sed 's/\w\+/[&]/g'
[this] [is] [an] [example]

3.匹配分组

使用正则表达式时,可以进行分组,其中&代表整个匹配到的字符串,\n代表第n个分组匹配到的字符串。

$ echo "this is digit 1" | sed 's/digit \(\d\)/\1/'
this is 1

4.组合多个表达式

$ sed 'expr1' | sed 'expr2' 等价于
$ sed 'expr1; expr2'

另外,sed表达式通常使用单引号,如果使用双引号,会对表达式里面的变量进行求值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值