zoukankan      html  css  js  c++  java
  • shell--学习 sed

    sed:数据流编辑器

    读一行到内存处理一行然后输出一行。 

    模式空间:

    sed:默认不编辑源文件

    sed [option]    ADDRESSCOMMAND   file

    1、起始行、 结束行

    sed   startline,endline   file               sed 2,5p  file

    2、模式匹配   /模式/

    sed /^root/p   file                    匹配到会打印两次,因为每个本身都要打印

    3、 /模式1/,/模式2/

    sed /^l/,/^h/p   file       以l开头的行到以h结尾的行,都指第一次匹配的

    4、只给一个数值,行号,表示精确指定某行

    sed  5p  file 

    5、指定起始行,使用+N,表示从指定的行开始,向后的N行,共N+1行内容
    sed 10,+5 file

    sed命令:
        p:显示符合条件的行
        d:删除符合条件的行              sed  /^'  '/d   file    删除空白开头的行
        a: append 用法:a string 在指定的行后追加新行,内容为string

              # sed    '/d$/a  hello world hello world'   file      在以d结尾后面加两行内容

              其实就把这些内容当成一个字符串追加进来,只是 在文本里被当成换行符处理了
        i:insert 用法:i string 在指定的行的前面插入新行。内容为string
        r:r filename 将指定的文件的内容添加至符合条件的行处   sed '/d$/r/root/t2' t
        w:w filename 将指定范围内的内容另存为到指定的文件中(重复会覆盖)  sed /d$/w /tmp/d.txt  t
        s:查找并替换。s/匹配模式/要替换的内容/;@ # $ % a
    每行所有匹配到的内容都替换:
        g:全局替换                          sed  s/d/D/g file     sed/s/l..e/&r/g   file    &指匹配的整体

        i:查找的时候忽略字符的大小写

    sed的选项:
            
    -n:静态模式,不显示模式空间中的内容,只显示匹配条件的行        sed -n 1p  file
    -r:使用扩展正则表达式  sed  -r  s/(l..e)(m+)/1r2xx/g  file   1指括号里的整体(后向引用) 不用转义括号
    -i:直接修改源文件

    练习:
    有一个文本文件:

    username,age,gender,salary
    zhangsan,20,F,2000

    sed的后向引用:
        &表示引用模式匹配的整个字符串


    练习:
    1、将history命令的结果行首的空白字符删掉[[:space:]]

                        history | sed s/^[[:space:]]//g
    2、取出一个文件路径的父目录 比如/var/log/mysql/acces.log ===>/var/log/mysql/
                      echo"/var/log/mysql" | sed -r 's#^(/?.*/).+/?#1#g'
    3、删除文件中以空白字符+#开头的行中的空白字符及#
       #asdsdasd
    ==>
    asdasd
    sed -r  s/^[[:space:]]+#//g file

    sed -r   's/^(l.*e$)/#1/g'  file    给l开头e结尾的加注释#

  • 相关阅读:
    linux 内核配置
    使用 git 下载linux 源码
    订阅 linux 邮件列表注意的问题
    使用反射创建一维数组和二维数组
    反射API
    反射机制
    集合案例--对ArrayList容器中的内容进行排序
    Collections
    TreeSet
    Set容器
  • 原文地址:https://www.cnblogs.com/Icanflyssj/p/5133922.html
Copyright © 2011-2022 走看看