zoukankan      html  css  js  c++  java
  • 理解功能强大的sed替换命令

    最近仔细看了一下sed命令,不得不感慨sed的强大功能,感觉能写半本书了。这能总结一些最常用的。

    替换并打印在屏幕上

    最常用的就是替换功能。
    sed 's/foo/bar/g'
    这条命令都比较熟,就是把所有foo替换成bar,但是前面的s和后面的g是什么意思?
    更一般的写法其实是
    sed 's/regrexp/replacement/g'
    s表示后面跟的是一个正则表达式regrexp,我们这里的正则表达式简化为一个单词foo,但是sed其实是支持正则表达式的。后面跟的g相当于Word里面的替换所有
    以下面的文本为例,

     This is the first apple. This is the second apple. This is the third apple.
     This is the forth apple.
     This is the fifth apple.
    

    sed 's/apple/APPLE/g' test.txt

    This is the first APPLE. This is the second APPLE. This is the third APPLE.
    This is the forth APPLE.
    This is the fifth APPLE.
    

    sed 's/apple/APPLE/3' test.txt

    只有某一行的apple出现第3次时,才会被替换掉。
    This is the first apple. This is the second apple. This is the third APPLE.
    This is the forth apple.
    This is the fifth apple.
    
    • 以上命令会将替换结果打印到屏幕上,不会改变文件本身
    • 整个文件都会被打印出来,包括被替换和没被替换的部分。可以加上-n命令使用静默模式,不过-n命令本身也有复杂的用法,这里就不介绍

    多条命令同时执行

    很多教程在介绍 -e参数时候说,这个命令加不加结果都一样。这属于理解有误,如果加不加都一样,这个参数就没有存在的必要了。正确的说法是,如果一次只执行一条sed命令,加不加-e参数没有区别

    -e参数的作用就是让你可以按顺序执行多条命令,比如
    sed -e 's/apple/APPLE/g' -e 's/APPLE/ORANGE/3' test.txt
    输出的结果是

    This is the first APPLE. This is the second APPLE. This is the third ORANGE.
    This is the forth APPLE.
    This is the fifth APPLE.
    

    上面这条命令首先把所有apple都替换成APPLE,然后把每行出现第3次的APPLE替换成ORANGE。

    替换并修改源文件

    以上所有操作只是把替换后的结果打印在屏幕上,并不会修改源文件。如果想要修改源文件,需要在命令前面加上-i参数。保险起见,加-i参数前最好先打印预览一下结果。

  • 相关阅读:
    memwatch内存泄露检测工具
    JavasSript实现秒转换为“天时分秒”控件和TDD测试方法应用
    字符编码转换笔记
    AjaxFileUpload 方法与原理分析
    Lua Rings库介绍
    Virtualbox+UbuntuServer+Xshell搭建Linux开发环境
    HTTP下载文件名称编码说明
    lua metatable 和 _index 实验
    前向后瞻正则表达式及其JS例子
    浏览器浏览记忆(history)几则技巧记录
  • 原文地址:https://www.cnblogs.com/yaos/p/14014478.html
Copyright © 2011-2022 走看看