Day18操作系统三剑客命令-sed

2019-11-05  本文已影响0人  a幕城
三剑客sed命令概念介绍 
    作用说明: ` stream editor for filtering and transforming text`
               文件处理编辑命令
    原理过程:  按照文件每行信息进行处理, 找出符合条件信息, 执行相应操作
    语法结构: ` sed [参数] '条件 指令操作'  文件信息`

三剑客sed命令使用方法
   ` 准备环境:
cat >person.txt<<EOF
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
EOF
  1) 如何进行查询
       a 按照行号查询信息
         查找单行信息:  sed -n '3p'   文件信息 
         查找多行信息:  sed -n '2,4p' 文件信息   连续多行   sed -n '2p;4p' person.txt  不连续多行
                        sed -n '2,$p' 文件信息
       
       b 按照字符查询信息
         查找单行信息:  sed -n '/CTO/p' person.txt 
         查看多行信息:  sed -n '/CTO/,/CIO/p' person.txt                              sed -n '/CTO/p;/CIO/p' person.txt
        [root@linux67 oldboy]# cat person.txt 
        101,oldboy,CEO
        102,zhaoyao,CTO
        103,Alex,COO
        104,yy,CFO
        105,feixue,CIO
        102,zhaoyao,CTO
        103,Alex,COO
        104,yy,CFO
        [root@linux67 oldboy]# sed -n '/CTO/,/CIO/p' person.txt 
         102,zhaoyao,CTO
         103,Alex,COO
         104,yy,CFO
         105,feixue,CIO
         102,zhaoyao,CTO
         103,Alex,COO
         104,yy,CFO
         2)如何进行删除
         ed -i '6d' person.txt  
       sed -i.bak '/COO/d' person.txt       --- 将源文件内容先进行备份, 在进行操作
       sed -ri '/CFO|CTO/d' person.txt
       
       坑: 删除一个文件有#号的行
           1) 查询需要删除内容
              sed -n '/^#/p' config
           2) 删除文件信息
              sed -i '/^#/p' config
       PS: 
       1. -i参数后面不能再跟上其他参数
       2. -i参数和-n参数尽量不要结合使用
       -i : 真正修改文件内容
3) 如何进行添加
       3a: 在第三行的下面添加相应信息
       3i: 在第三行的上面添加相应信息
    
       [root@linux67 oldboy]# cat person.txt
       101,oldboy,CEO
       105,feixue,CIO
       [root@linux67 oldboy]# sed -i '1a102,zhaoyao,CTO' person.txt
       [root@linux67 oldboy]# cat person.txt
       101,oldboy,CEO
       102,zhaoyao,CTO
       105,feixue,CIO
       
    4) 如何进行修改
       sed 参数 's#需要替换信息#替换成什么信息#g'  文件信息 
       
       sed  '$s#CEO#CIO#g' person.txt                 --- 指定条件进行替换
       sed -i "s#$Init_IP#$Change_IP#g" $File_info    --- 指定变量信息做替换需要注意双引号使用`
上一篇下一篇

猜你喜欢

热点阅读