zoukankan      html  css  js  c++  java
  • sed命令基本使用

    1、sed简介

    sed是stream editor(流编辑器得缩写),用来处理Linux系统中的文件文本;

    2、sed如何处理文件

    sed是一行一行读取文件内容并进行处理,最后将处理结果输出到屏幕;

      1、首先sed将一行一行读取文件内容,并将其保存到临时一个缓冲区(也称模式空间);

      2、然后将根据需求处理临时缓冲区中的内容,完成之后输出到屏幕;

    sed不加 -i 选项时默认只对缓冲区中得文本进行编辑,并不会对源文件进行修改;

    3、sed基本使用操作

    sed有两种语法格式分别是命令行模式和脚本模式

      一、命令行模式

      a)语法格式

      sed [选项] '处理动作' 文件名称

      常用选项

        -e  进行多项多次编辑

        -n  取消默认输出  #不自动打印临时缓存区内容

        -r  使用扩展正则表达式

        -i  对源文件进行编辑  #不要与-n一起使用

        -f  指定sed脚本得文件名

      常见处理动作

        sed中使用动作时都需要在单引号中

        'p'  打印

        'i'  指定行之前插入内容  #相当于vim中O

        'a'  指定行之后插入内容  #相当于vim中o

        'c'  替换指定行所有内容

        'd'  删除指定行

      示例  

    vim 1.txt
    aaaaaaaaaaa
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    192.168.101.1

      b)对文件进行增、删、改、查操作

        打印内容

    sed -n 'p' 1.txt   #打印文件每一行,并取消默认输出
    sed -n '1p' 1.txt   #打印第一行
    sed -n '3,5p' 1.txt   #打印3-5行
    sed -n '$p' 1.txt  #打印末尾行

        增加文件内容

    sed '$ahhhhhh' 1.txt   #在文件末尾行下增加hhhhhh内容
    sed 'ahhhhhh' 1.txt   #在文件每行下增加内容
    sed '3ahhhhhh' 1.txt   #在文件第3行下增加内容
    sed '$ihhhhhh' 1.txt   #在文件末尾行上一行增加内容
    sed '3ihhhhhh' 1.txt   #在文件第3行上一行增加内容
    sed '/^mail/ihhhhhh' 1.txt  #在mail开头得行上一行增加内容

        修改文件内容  # c 替换整行内容   

    sed '5chhhhhh' 1.txt   #替换文件第5行内容为hhhhhh
    sed 'chhhhhh' 1.txt   #替换文件所有内容每行为hhhhhh
    sed '1,5chhhhhh' 1.txt   #替换1-5行所有内容
    sed '/^mail/chhhhhh' 1.txt  #替换以mail开头行得内容

        删除文件内容

    sed '5d' 1.txt   #删除文件第5行内容
    sed '1,9d' 1.txt   #删除文件1-9行内容
    sed '/[0-9]/d' 1.txt   #删除文件中包含数字得内容
    sed -r '/([0-9]{1,3}.){3}[0-9]{1,3}/d' 1.txt  #删除文件中有IP得内容 加r支持扩展正则
    sed '$d' 1.txt   #删除文件末尾行

      c)对文件进行检索替换操作

      语法:sed 's/搜索得内容/替换得内容/动作' 处理得文件

      s表示search搜索,/表示分隔符,也可以自己定义使用@或#,动作一般是打印p或全局替换g

    sed -n 's/mail/MAIL/p' 1.txt   #将文件中mail替换为MAIL
    sed -n 's/mail/MAIL/gp' 1.txt   #将文件中全部mail替换为MAIL
    sed 's//sbin/nologin/test/gp' 1.txt   #将文件中/sbin/nologin替换为test
    sed 's@/sbin/nologin@test@gp' 1.txt   #以@为分隔符替换
    sed '9s@/sbin/nologin@test@gp' 1.txt   #替换文件第9行/sbin/nologin为test
    sed -n '1,5s/^/#/p' 1.txt  #注释文件第1-5行

      其他命令

        r  从另外文件中读取内容

        w  内容另存为

        &  保存查找串以便替换串中使用  和()相同

        =  打印行号

        !  对所选行以外所有行应用命令,放到行数后

        q  退出

    sed '3r /etc/hosts' 1.txt   #从/etc/hosts文件中读取内容到1.txt文件中
    sed '1,5w 11.txt' 1.txt     #将1.txt文件中1-5行内容保存到11.txt文件中
    sed -r '/([0-9]{1,3}.){3}[0-9]{1,3}/w 12.txt' 1.txt  #将1.txt文件中IP地址得行保存到12.txt文件中
    sed -n '1,5s/^/#/p' 1.txt   #注释1-5行
    sed -n 's/^sync/#&/gp' 1.txt  #注释以sync开头得行
    sed -ne '/mail/p' -ne '/mail/=' 1.txt   #打印含有mail得行并打印行号  e选项进行多项编辑
    sed -n '/mail/=;/mail/p' 1.txt   #分号也可多项编辑
    sed -n '1,5!p' 1.txt   #打印1-5行以外得行
    sed -e '5ihhhhhhhh' -e '8atest' 1.txt -e '5=;8='  #在第五行前和第8行后插入内容,并打印5、8行号

      d)结合正则使用

        sed 选项 'sed命令或者正则表达式或者地址定位' 文件名

        1、地址定位用于决定对哪些内容进行编辑,地址形式可以是数字、正则表达式或者二者得结合

        2、如果没有地址定位,sed将对所有行进行处理

    正则 说明 备注
    /key/ 查询包含关键字得行 sed -n '/mail/p'1.txt
    /key1/,/key2/ 匹配包含两个关键字之间得行 sed -n '/^root/,/^mail/p' 1.txt
    /key/,x 匹配关键字得行到文件第x行得内容,包括关键字所在得行 sed -n '/mail/,7p' 1.txt
    x,/key/ x行开始到关键字匹配得行  
    x,y 匹配x到y行  加感叹号取反  
    /key/! 匹配不包含key得行  

      二、脚本模式

        用法

    # sed -f scripts.sed file
    建议使用    ./sed.sh file
    
    脚本第一行写
    #!/bin/sed -f
    1,5d
    s/mail/MAIL/g
    3ihhhhh
    a666666
    p


         

  • 相关阅读:
    (转)性能测试---并发用户理解
    (转)基于DDD的现代ASP.NET开发框架--ABP分层架构
    (转)Web自动化测试中的接口测试
    (转) 一致性Hash算法在Memcached中的应用
    Memcached工作原理及常见问题
    Memcached介绍及相关知识
    .net 面试题总结
    使用IDEA工具配置和运行vue项目(详细其中的坑)
    关于伪分布zookeeper集群启动出错(Error contacting service. It is probably not running.)
    常用查找和排序
  • 原文地址:https://www.cnblogs.com/goujinyang/p/13192764.html
Copyright © 2011-2022 走看看