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结尾的加注释#

  • 相关阅读:
    字符串 CSV解析 表格 逗号分隔值 通讯录 电话簿 MD
    Context Application 使用总结 MD
    RxJava RxPermissions 动态权限 简介 原理 案例 MD
    Luban 鲁班 图片压缩 MD
    FileProvider N 7.0 升级 安装APK 选择文件 拍照 临时权限 MD
    组件化 得到 DDComponent JIMU 模块 插件 MD
    gradlew 命令行 build 调试 构建错误 Manifest merger failed MD
    protobuf Protocol Buffers 简介 案例 MD
    ORM数据库框架 SQLite 常用数据库框架比较 MD
    [工具配置]requirejs 多页面,多入口js文件打包总结
  • 原文地址:https://www.cnblogs.com/Icanflyssj/p/5133922.html
Copyright © 2011-2022 走看看