zoukankan      html  css  js  c++  java
  • sed 命令

    NAME
        sed - stream editor for filtering and transforming text
    
    SYNOPSIS
        sed [OPTION]... {script-only-if-no-other-script} [input-file]...
    参数:

          a 在当前行下面插入文本。
          i 在当前行上面插入文本。
          c 把选定的行改为新的文本。
          d 删除,删除选择的行。
          D 删除模板块的第一行。
          s 替换指定字符。
          h 拷贝模板块的内容到内存中的缓冲区。
          H 追加模板块的内容到内存中的缓冲区。
          g 获得内存缓冲区的内容,并替代当前模板块中的文本。
          G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
          l 列表不能打印字符的清单。
          n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
          N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
          p 打印模板块的行。
          P(大写) 打印模板块的第一行。
          q 退出Sed。
          b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
          r file 从file中读行。
          t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
          T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
          w file 写并追加模板块到file末尾。
          W file 写并追加模板块的第一行到file末尾。
          ! 表示后面的命令对所有没有被选定的行发生作用。
          = 打印当前行号码。
          # 把注释扩展到下一个换行符以前。

    sed 替换标记

        g 表示行内全面替换。
        p 表示打印行。
        w 表示把行写入一个文件。
        x 表示互换模板块中的文本和缓冲区中的文本。
        y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)。
        1 子串匹配标记。
        & 已匹配字符串标记。

    sed元字符集

       ^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
       $ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
       . 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
       * 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
       [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。
       [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
       (..) 匹配子串,保存匹配的字符,如s/(love)able/1rs,loveable被替换成lovers。
       & 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
       < 匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。
       > 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。
       x{m} 重复字符x,m次,如:/0{5}/匹配包含5个0的行。
       x{m,} 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
       x{m,n} 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。

    示例:

    替换操作

    sed 's/root/rooot/'  passwd  //单条替换

    sed 's/root/rooot/N'  passwd  //替换第N个

    sed 's/root/rooot/g'  passwd  //全部替换

    sed 's/root/rooot/Ng'  passwd  //从第N个开始替换

    sed -n 's/root/rooot/p'  passwd  //仅打印替换成功的行

    sed '2c hello,world' passwd //替换第二行

    sed '1,2c hello,world' passwd //替换1-2行为新文本

    sed '/rooot/{s/root/12345/}' passwd //匹配到rooot的行将root替换成12345

    sed -i  's/root/rooot/'  passwd  //将更改应用于文件

    删除操作

    sed '/^$/d' passwd //删除空行

    sed '2d'  passwd //删除第2行

    sed '2,$d' passwd //删除2至末尾所有行

    sed '$d' passwd  //删除最后一行

    sed '/^root/d' passwd //删除所有root开头的行

    已匹配字符标记&

    sed 's/root/[&]/g'  passwd

    子串匹配标记1

    echo aaa BBB | sed 's/([a-z]+) ([A-Z]+)/2 1/'

    多个表达式组合

    sed '表达式' | sed '表达式'
    等价于:
    sed '表达式; 表达式'

    引用

    test=hello
    echo hello WORLD | sed "s/$test/HELLO/"

    选定行的范围:,

    sed -n '/root/,/lp/p'  passwd   //打印匹配root至lp范围内的所有行

    sed -n '2,/^bin/p'  passwd //打印第二行开始以bin开头的所有行

    sed '/^bin/,/lp/s/$/aaa bbb/' passwd  //替换匹配以bin开头至lp范围的所有结束符为aaa bbb

    多点编辑:e

    sed -e '3d' -e 's/rooot/12345/' passwd  //执行多个sed命令

    从文件读入:r

    sed  '/^bin/r passwd01'  passwd //匹配以bin开头的行后面显示passwd01内容

    写入文件:w

    sed -n '/^bin/w passwd02' passwd //匹配以bin开头的行写入到passwd02文件中

    追加:a

    插入(行的上面):i 

    sed  '1ihello,world' passwd //在第一行上面插入

    下一个: n

    sed '/root/{ n; s/bin/123/; }' passwd //如果root被匹配则移动到下一行替换bin为123

    打印匹配字符串的下一行

    sed -n '/^bin/{n;p}'  passwd

    变形:y

    sed '1,3y/bin/BIN/' passwd //将1到3行所有的b i n替换成B I  N

    退出:q

    sed '1q' passwd //打印到第一行退出sed

    保持和获取:h命令和G命令

    sed -e '/^bin/h' -e '$G'  passwd //将匹配到的以bin开头的行在最后一行输出,$ 结束位

    保持和互换:h命令和x命令

    sed -e '/root/h' -e '/lp/x' passwd //使用包含root的行替换包含lp的行

    打印奇数行和偶数行

    sed -n 'p;n' test.txt #奇数行
    sed -n 'n;p' test.txt #偶数行

    sed -n '1~2p' test.txt #奇数行
    sed -n '2~2p' test.txt #偶数行

  • 相关阅读:
    FP-growth算法思想和其python实现
    HDInsight Command
    OpsMgr Connector 20070
    Exchange: How to get Mailbox size in Exchange Shell?
    Get members for ‘Dynamic Distribution Group’
    Hadoop 学习之路-开篇
    Office365 配置完成ADFS之后修改密码之后需要删除登陆信息
    添加只读访问权限到邮箱里的所有文件夹
    使用 Windows PowerShell 连接到 Lync Online
    windows 7无法打补丁
  • 原文地址:https://www.cnblogs.com/imcati/p/11657635.html
Copyright © 2011-2022 走看看