zoukankan      html  css  js  c++  java
  • sed用法

    sed基本用法:
    sed: Stream EDitor
    行编辑器 (全屏编辑器: vi)

    sed: 模式空间
    默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;




    sed [options] 'AddressCommand' file ...
    -n: 静默模式,不再默认显示模式空间中的内容
    -i: 直接修改原文件
    -e SCRIPT -e SCRIPT:可以同时执行多个脚本
    -f /PATH/TO/SED_SCRIPT
    sed -f /path/to/scripts  file
    -r: 表示使用扩展正则表达式

    Address:
    1、StartLine,EndLine
    比如1,100
    $:最后一行
    2、/RegExp/
    /^root/
    3、/pattern1/,/pattern2/
    第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
    4、LineNumber
    指定的行
    5、StartLine, +N
    从startLine开始,向后的N行;

    Command:
    d: 删除符合条件的行;
    p: 显示符合条件的行;
    a \string: 在指定的行后面追加新行,内容为string
    \n:可以用于换行
    i \string: 在指定的行前面添加新行,内容为string
    r FILE: 将指定的文件的内容添加至符合条件的行处
    w FILE: 将地址指定的范围内的行另存至指定的文件中; 
    s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串
    加修饰符
    g: 全局替换
    i: 忽略字符大小写
    s///: s###, s@@@
    \(\), \1, \2

    l..e: like-->liker
      love-->lover
      
      like-->Like
      love-->Love

    &: 引用模式匹配整个串

    字符测试:
    ==:测试是否相等,相等为真,不等为假
    !=: 测试是否不等,不等为真,等为假
    >
    <
    -n string: 测试指定字符串是否为空,空则真,不空则假
    -z string: 测试指定字符串是否不空,不空为真,空则为假


    sed练习:
    1、删除/etc/grub.conf文件中行首的空白符;

    sed -r 's@^[[:spapce:]]+@@g' /etc/grub.conf
    2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
    sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab
    3、删除/etc/inittab文件中的空白行;
    sed '/^$/d' /etc/inittab
    4、删除/etc/inittab文件中开头的#号; 
    sed 's@^#@@g' /etc/inittab
    5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
    sed -r 's@^#[[:space:]]+@@g' /etc/inittab
    6、删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#
    sed -r 's@^[[:space:]]+#@@g' /etc/inittab
    7、取出一个文件路径的目录名称;
    echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g'
    基名:
    echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'



    测试:
    整数测试

    -le
    -lt
    -ge
    -gt
    -eq
    -ne
    字符测试
    ==
    !=
    >
    <
    -n
    -z
    文件测试
    -e
    -f
    -d
    -r
    -w
    -x

    if [ $# -gt 1 ]; then


    组合测试条件
    -a: 与关系
    -o: 或关系
    !: 非关系

    if [ $# -gt 1 -a $# -le 3 ]
    if [ $# -gt 1 ] && [ $# -le 3 ]

    起风了,努力生存
  • 相关阅读:
    ArrayList removeRange方法分析
    LinkedHashMap源码分析(基于JDK1.6)
    LinkedList原码分析(基于JDK1.6)
    TreeMap源码分析——深入分析(基于JDK1.6)
    51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
    51 NOD 1049 最大子段和 动态规划 模板 板子 DP
    51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
    8月20日 训练日记
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/StivenYang/p/8441309.html
Copyright © 2011-2022 走看看