SHELL——sed命令

(1). 替换给定文本中的字符串

    $ sed 's/pattern/replace_string/' filename

   或者

    $ cat file | sed 's/pattern/replace_string/'

(2). -i 保存替换

   默认情况下,sed命令只会打印替换后的文本,如果需要在替换的同时保存更改,可以使用-i选项。

    $ sed -i 's/text/replace/' file

(3). 之前的sed命令只会替换每行的第一处匹配的内容,若果要替换所有内容需要在命令尾部加参数g

    $ sed 's/pattern/replace_string/g' file

    若果需要从第n处匹配开始替换,可以使用/Ng选项

    $ echo thisthisthisthis | sed 's/this/THIS/2g'     
    thisTHISTHISTHIS

===============================================================================

1. 移除空白行

空白行可以用正则表达式 ^$ 进行匹配

    $ sed '/^$/d' file

'pattern/d' 会移除匹配样式的行,在空白行中,行尾标记紧跟在行首标记后

2.  $ sed -i .bak 's/pattern/replace/g'  file

此时的sed不仅会执行替换,还会创建一个file.bak文件,包含原始文件内容。

3. 已匹配字符串标记(&)

在sed中,我们可以用 &标记匹配样式的字符串,这样就能够在替换字符串时使用已匹配的内容。

$ echo this is an example | sed 's/\w\+/[&]/g' 
[this] [is] [an] [example] 
正则表达式 \w\+ 匹配每一个单词,然后我们用[&]替换它。& 对应于之前所匹配到的单词。

4. 子串匹配标记

$ echo seven EIGHT | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/' 
EIGHT seven 
([a-z]\+\)匹配第一个单词,([A-Z]\+\)匹配第二个单词。\1和\2用来引用它们。这种引用
被称为向后引用(back reference)。在替换部分,它们的次序被更改为\2 \1,因此结果就呈现
出逆序的形式。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值