Linux三剑客命令着sed学习笔记

###  1.sed 命令详解
    sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器
    sed是操作、过滤和转换文本内容的强大工具。常用功能包括对文件实现快速增删改查,
    其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行)。

###  2.语法格式
     sed [选项] '[sed 指令]' [文件信息]

##  说明:
     1)sed以及后面的选项、命令和输入文件,每个元素之间都至少要一个空格。
     2)sed内置命令行字符,既可以是单个命令,也可以是多个命令参数的组合
     3)输入文件是sed需要处理的文件,这是可选项;sed还能够从标准输入如管道中获取输入。

###  3.选项说明

##  sed命令的参数选项及说明

      参数选项    |     解释说明

       -n        |   取消默认的sed输出,常与sed内置命令的p 连用

       -i        |   直接修改文件内容,而不是输出到终端。
                 |   如果不适用-i 选项,则sed 只是修改内存中的数据,并不会影响磁盘上的文件

##  sed常用内置命令字符的功能说明
     sed的内置命令字符    |     解释说明

     a(append)          |    表示追加文本,在指定行后面添加一行或多行文本

     
     [root@jinc1 test]# sed '2a 6,dandan,CSO' persons.txt
      1,oldboy,CEO
      2,zhangyao,CTO
      6,dandan,CSO
      3,alex,CFO
      4,yy,CFO
      5,feixue,CIO
      (在第2行后添加6,dandan,CSO)   

        
 

     i(insert)          |    表示插入文本,在指定行前面添加一行或者多行文本
     [root@jinc1 test]# sed '2i 6,dandan,CTO' persons.txt
      1,oldboy,CEO
      6,dandan,CTO
      2,zhangyao,CTO
      3,alex,CFO
      4,yy,CFO
      5,feixue,CIO
         

    d(delete)           |    只在输出时删除指定行的文本
    [root@jinc1 test]# sed '2d' persons.txt
     1,oldboy,CEO
     3,alex,CFO
     4,yy,CFO
     5,feixue,CIO

     p(print)           |      表示打印匹配行的内容,通常p会与选项-n一起使用
    [root@jinc1 test]# sed '2p' persons.txt
     1,oldboy,CEO
     2,zhangyao,CTO
     2,zhangyao,CTO
     3,alex,CFO
     4,yy,CFO
     5,feixue,CIO
     
     打印多行内容(连续的行)
     [root@jinc ~]# sed -n '2,4p' person.txt
     2,zhangyao,CTO
     3,alex,CFO
     4,yy,CFO
     打印多行内容(不连续的行)
     [root@jinc ~]# sed -n '2p;4p' person.txt
      2,zhangyao,CTO
      4,yy,CFO

##  当我们只使用 p的时候不只是输出第二行,其他内容也输出出来了(sed的默认输出功能),
所以,我们一般使用-n来取消默认输出,只输出匹配行文本

     [root@jinc1 test]# sed -n '2p' persons.txt
     2,zhangyao,CTO

      s/regexp/replacement/  |      匹配regexp部分内容,用replacement替换regexp匹配的内容,
      regexp部分可以使用正则表达式,在replacement部分可以使用特殊字符串&和\1-\9等匹配regexp部
      分的部分内容。在实战场景中,s/regexp/replacement/  结尾常与g匹配做全局的替换。

     [root@jinc1 test]# sed 's#zhangyao#dandan#g' persons.txt
      1,oldboy,CEO
      2,dandan,CTO
      3,alex,CFO
      4,yy,CFO
      5,feixue,CIO

###  替换
     -i 参数 (慎用)
     最好:-i.bak  添加备份
     sed -i 's#要替换的#要替换成的#g' filename
     s---
     g---全局

###  说明:当使用变量时,要把'' 变成 ""

###  -未完待续-

猜你喜欢

转载自blog.csdn.net/fake_hydra/article/details/81632266