sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
         sed [-nefri] 'command' filename

常用选项:
        -n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。

但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e:直接在指令列模式上进行 sed 的动作编辑;
        -f: 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r: sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i: 直接修改读取的档案内容,而不是由屏幕输出。

常用命令:
        a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚;      
        i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
        p:列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
        s:取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

举例:(假设我们有一文件名为sed.txt)

  1. # sed.txt
  2. Hello!
  3. ruby is me,welcome to my blog.
  4. end
  5. ruby is me,Welcome to my blog.

删除某行(对输入流进行操作--input stream)

  1. [root@ant-colonies tmp]# sed '1d' sed.txt # 删除第一行
  2. ruby is me,welcome to my blog.
  3. end
    ruby is me,Welcome to my blog.
  4. [root@ant-colonies tmp]# sed '$d' sed.txt # 删除最后一行
  5. Hello!
  6. ruby is me,welcome to my blog.
    end
  7. [root@ant-colonies tmp]# sed '2,$d' sed.txt # 删除第二行到最后一行
  8. Hello!
  9. [root@ant-colonies tmp]#

显示某行

  1. [root@ant-colonies tmp]# sed -n '1p' sed.txt # 显示第一行
  2. Hello!
  3. [root@ant-colonies tmp]# sed -n '2,$p' sed.txt # 显示第二行到最后一行
  4. ruby is me,welcome to my blog.
  5. end
    ruby is me,Welcome to my blog.

模式查询

  1. [root@ant-colonies tmp]# sed -n '/ruby/p' sed.txt # 查询包括关键字ruby的所有行
  2. ruby is me,welcome to my blog.
    ruby is me,Welcome to my blog.
  3. [root@ant-colonies tmp]# sed -n '/^r.*g.$/p' sed.txt # 查询以字母'r'开头,'g.'结尾的行
  4. ruby is me,Welcome to my blog.
  5. [root@ant-colonies tmp]#

增加一行或多行字符串

  1. [root@ant-colonies tmp]# cat sed.txt
  2. Hello!
  3. ruby is me,welcome to my blog.
  4. end
  5. ruby is me,welcome to my blog.
  6. [root@ant-colonies tmp]# sed '1a drink tea' sed.txt
  7. Hello!
  8. drink tea
  9. ruby is me,welcome to my blog.
  10. end
  11. ruby is me,welcome to my blog.
  12. [root@ant-colonies tmp]# sed '1,3a drink tea' sed.txt
  13. Hello!
  14. drink tea
  15. ruby is me,welcome to my blog.
  16. drink tea
  17. end
  18. drink tea
  19. ruby is me,welcome to my blog.
  20. [root@ant-colonies tmp]# sed '1,3a drink tea\nor coffee' sed.txt
  21. Hello!
  22. drink tea
  23. or coffee
  24. ruby is me,welcome to my blog.
  25. drink tea
  26. or coffee
  27. end
  28. drink tea
  29. or coffee
  30. ruby is me,welcome to my blog.
  31.  
  32. [root@ant-colonies tmp]# cat sed.txt # 说明操作的是输入流
  33. Hello!
  34. ruby is me,welcome to my blog.
  35. end
  36. ruby is me,welcome to my blog.
  37. [root@ant-colonies tmp]#

替换一行或多行

  1. [root@ant-colonies tmp]# sed '1c Hill' sed.txt # 第一行替换为Hill
  2. Hill
  3. ruby is me,welcome to my blog.
  4. end
  5. ruby is me,welcome to my blog.
  6. [root@ant-colonies tmp]# sed '1,2c Hill' sed.txt # 第一行到第二行替换为Hill
  7. Hill
  8. end
  9. ruby is me,welcome to my blog.
  10. [root@ant-colonies tmp]# cat sed.txt
  11. Hello!
  12. ruby is me,welcome to my blog.
  13. end
  14. ruby is me,welcome to my blog.

替换一行中的某部分

  格式:sed 's/要替换的字符串/新的字符串/g'   (要替换的字符串可以用正则表达式)

  1. [root@ant-colonies tmp]# sed -n '/rub/p' sed.txt | sed 's/ruby/bird/' # 替换ruby为bird
  2. bird is me,welcome to my blog.
  3. bird is me,welcome to my blog.
  4. [root@ant-colonies tmp]# cat sed.txt
  5. Hello!
  6. ruby is me,welcome to my blog.
  7. end
  8. ruby is me,welcome to my blog.
  9. [root@ant-colonies tmp]# sed -n '/ruby/p' sed.txt | sed 's/ruby//' # 删除ruby
  10. is me,welcome to my blog.
  11. is me,welcome to my blog.

插入(对源文件进行的操作)

  1. [root@ant-colonies tmp]# cat sed.txt # 在文件sed.txt中最后一行直接输入"bye"
  2. Hello!
  3. ruby is me,welcome to my blog.
  4. end
  5. ruby is me,welcome to my blog.
  6. [root@ant-colonies tmp]# sed -i '$a bye' sed.txt
  7. [root@ant-colonies tmp]# cat sed.txt
  8. Hello!
  9. ruby is me,welcome to my blog.
  10. end
  11. ruby is me,welcome to my blog.
  12. bye
  13. [root@ant-colonies tmp]#

删除匹配行(对源文件进行的操作)

格式: sed -i '/匹配字符串/d'  filename  (注:若匹配字符串是变量,则需要"",而不是'')

  1. [root@ant-colonies tmp]# cat sed.txt
  2. Hello!
  3. ruby is me,welcome to my blog.
  4. end
  5. ruby is me,welcome to my blog.
  6. bye
  7. [root@ant-colonies tmp]# sed -i '/en/d' sed.txt
  8. [root@ant-colonies tmp]# cat sed.txt
  9. Hello!
  10. ruby is me,welcome to my blog.
  11. ruby is me,welcome to my blog.
  12. bye
  13. [root@ant-colonies tmp]#

替换匹配行中的某个字符串(对源文件进行的操作)

格式: sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/' filename

  1. [root@ant-colonies tmp]# cat sed.txt
  2. Hello!
  3. ruby is me,welcome to my blog.
  4. ruby is me,welcome to my blog.
  5. bye
  6. [root@ant-colonies tmp]# sed -i '/ru/s/ruby/birds/' sed.txt
  7. [root@ant-colonies tmp]# cat sed.txt
  8. Hello!
  9. birds is me,welcome to my blog.
  10. birds is me,welcome to my blog.
  11. bye
  12. [root@ant-colonies tmp]#

linux之sed的用法的更多相关文章

  1. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  2. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  3. linux中sed的用法【转】

    sed命令行格式为:         sed [-nefri]  ‘command’  输入文本/文件 常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的 ...

  4. [转载]linux中sed的用法

    转自:http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html sed命令行格式为:         sed [-nefri]  ‘ ...

  5. 【转载】linux之sed用法

    linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html   sed是一个很好的文件处理工具 ...

  6. [转帖]linux之sed用法

    linux之sed用法 https://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html docker images | awk ' ...

  7. linux之sed用法

    参考 http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行 ...

  8. 【转】 linux之sed用法

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

  9. linux中sed用法

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

随机推荐

  1. 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句

    请定义一个宏,比较两个数的a.b的大小,不能使用大于.小于.if语句 方法一:    #define max(a,b) ((((long)((a)-(b)))&0x80000000)?(b): ...

  2. CountDownLatch分析

    1 什么是CountDownLatch呢? 先看看官网的定义 :一种同步帮助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成. 现在由我来解释什么是CountDownLatch吧:比如说我 ...

  3. [xdoj1029]求解某个数的最高位和最低位

    解题关键: 1.最高位求法 long long int x=n^m; 式子两边同时取lg lg(x)=m*lg(n): x=10^(m*lg(n)): 10的整数次方的最高位一定是1,所以x的最高位取 ...

  4. 1. sqlmap超详细笔记+思维导图

    sqlmap思维导图: 基本操作笔记: -u #注入点 -f #指纹判别数据库类型 -b #获取数据库版本信息 -p #指定可测试的参数(?page=1&id=2 -p "page, ...

  5. opencv使用findContours等方法出现内存损坏之类的不能调用问题

    错误现象: 编译项目,如果该项目是debug,则在链接器输入配置opencv_world310d.lib如果是release则输入opencv_world310.lib,输入其中一个,多输,输错运行不 ...

  6. 用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)

    项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则 ...

  7. 聚类算法(二)--BIRCH

    BIRCH (balanced iterative reducing and clustering using hierarchies)(名字太长不用管了) 无监督,适合大样本的聚类方法.大多数情况只 ...

  8. laravel 导出插件

    转发:https://blog.csdn.net/gu_wen_jie/article/details/79296470 版本:laravel5 php 5.6 安装步骤: 一.安装插件 ①.首先在L ...

  9. hortonworks docker 安装

    1. 下载并解压安装脚本:  Hortonworks Data Platform (HDP) for Docker 2. 进入到解压后的目录,运行下面的命令,{HDPversion} 需要替换成相应目 ...

  10. Hadoop eclipse plugin

    我的eclipse是在win7上,hadoop在win7里的虚拟机里的ubuntu上,为了方便起见,想在eclipse上安装hadoop的插件,主要参考 https://my.oschina.net/ ...