• Learn sed using these command on Linux(流线式编辑器——sed)


    是对文件中的每一行进行处理,不会对源文件进行修改

    sed --version

    sed '11d' sed_file

    sed -n '/[Bb]erry/p' sed_file (由于设置了n,所以只打印出有Berry/berry的行)

    sed  '/[Bb]erry/p' sed_file(没有设置n,则会输出所有的行,同时有Berry/berry的行会输出两次)

    sed 's/berry/bbery/' sed_file

    sed '/^berry/p' sed_file (打印所有以berry开头的那一行)

    sed '/[^b]erry/p' sed_file (打印出所有不包含以b开头,并且紧跟着erry的行,这种匹配是根据一个单词来说德)sed -n '/.erry/p/' sed_file (.代表是任意非换行的字符)

    x{m} 重复字符X,M次
    x{m,} 重复字符X,至少M次
    x{m,n}a 重复字符X,至少M次,不多于N 次
    sed '/r{2}/p sed_file (匹配2个r,至少有2个r 或 2~10个r 的行)

    sed '3,$d' sed_file (删除第3行到最后一行,其他的行被打印)

    (..) 保存匹配的字符         s/(love)able/1rs/        标签标记出来的部分被保存在1号标签中,为了方便在后面引用,使用|来表
                              示,|将被标签标记出来的模板替换,从表达式的最左边开始,向右最多可以使用9个标签。
                              例如,love被保存在寄存器1当中,并稍后用做字符串替换。loveable就被替换为lovers 3

    #sed -n 's/(Mar)got/1ianne/p' datafile
    north NO Marianne Weber 4.5 .89 5 9
    说明:

      模板Mar 被包含在一对括号内,并在特殊的寄存器中保存为标签1(tag1),它将在后面作为1
    替换字符串。Margot替换所有的Marianne。

    #sed -n 's/(berry)/1able/gp' sed_file   (同理,所有的berry都将被berryable所替换,并打印出这些被处理的行)

    #sed 's/berry/&able/gp' sed_file (结果与上相同)

    sed 's#3#88#g' datafile (#相当于/,作为搜索字符串和替换字符串的分隔符,默认分隔符是/,但是在s 命令使用
                  的情况下可以改变。不论什么字符紧跟着s 命令都被认为是新的分隔符。这个技术在搜索包含斜杠
                  的模板时非常有用,例如搜索时间和路径的时候。)

    sed -n'/west/,/east/p' datafile(所有在模板west 和east所确定的范围内的行都被打印。如果west出现在east后面的行中,从west
    开始到下一个east,无论这个east出现在那里,二者之间的行都将被打印,即使从west开始到了文件的末尾如果还没有出现east,

    那么从west 到末尾的所有的行都将打印。箭头所表示的就是被打印的范围。)

    sed '/west/,/east/s/$/**VACA**/' datafile (对于模板east 和west 之间的行,每行的末尾用字符串**VACA**替换,下一行都被移动到该字
    符串的后面)

    多点编辑:e 命令

    sed -e '1,3d' -e 's/Berry/berry/p' sed_file(先删除,后进行字符串替换)

    因为两个命令是在同一行执行(也就是说,两个命令都是在当前行的固定空间中执行),所以命令的执行顺序将影响命令的结果。

    sed -–expression='s/TB/Tobias/' -–expression='/north/d' datafile

    从文件读入:r命令

    sed '/Suan/r newfile' datafile

    命令 r 表示从文件中读取指定的行。newfile 文件的内容被读入输入文件datafile 中,显示在与
    suzan相匹配的行的后面。如果suzan在不止一行中出现,newfile的内容就将显示在所有匹配行的下
    面。

    写入文件:w命令

    sed –n '/north/w newfile2' datafile

    命令w表示把一个指定的行写入文件。所有包含north的行都将被写入名为newfile2的文件中。

    追加:a 命令(a)

    sed '/^north /a\
    --->THE NORTH SALES DISTRICT HAS MOVED<---' datafile

    命令a表示追加。字符串--->THE NORTH SALES DISTRICT HAS MOVED <---将被追加到以
    north开头,且north后面有空格的行的后面。需要被追加的文本必须写在命令行中追加命令的后面。
    sed要求在命令a后面有一个反斜杠。第二个反斜杠表示在TC Shell下转义换行符,这样才能在
    下一行完成引用。a如果被追加的不止一行,除了最后一行,每一行也都要用反斜杠结束。

    插入:i命令

    sed '/eastern/i\
    NEW ENGLAND REGION
    --------------------------------' datafile

    命令 i 是插入命令。如果模板eastern 被匹配,i 命令就把反斜杠后面的文本插入到包含eastern
    的行的前面。除了最后一行,每一行插入完成后都需要反斜杠(额外的反斜杠是用来满足TC Shell
    的要求的)。

    下一个:n命令

    sed '/eastern /{ n; s/AM/Archie/; }' datafile

    如果模板eastern 匹配了某一行,n 命令就移动到输入文件中该行的下一行,替换这一行的模式
    空间。即用Archie替换AM,打印该行,然后再继续。

    变形:y命令

    sed '1,3y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKL
    MNOPQRSTUVWXYZ/' datafile

    对于1~3行,y命令把所有的小写字符转变为大写字符。正则表达式元字符不能使用这个命令。

    退出:q命令

    sed ‘5q' sed_file

    sed '/Lewis/{ s/Lewis/Joseph/;q; }' datafile(在Lewis匹配的行,先用Joseph替换Lewis,然后退出sed程序)

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

    sed -e '/northeast/h' -e '$G' datafile (如果有多行northeast匹配,那么只会把最近的保存进保持缓冲区的字符串追加到模式空间中)

    在sed处理的文件的时候,每一行都被保存在一个叫作模式空间(pattern space)的临时缓冲区
    中。除非行被删除或者输出被取消,否则所有被处理过的行都将打印在屏幕上。接着模式空间被清
    空,并存入新的一行等待处理。在这个例子中,包含模板的northeast 行被找到,并被放入模式空间
    中,h命令将其复制并存入一个称为保持缓冲区(holding buffer)的特殊缓冲区内。在第二个sed 结
    构中,当达到最后一行后,G命令告诉sed 从保持缓冲区中取得该行,然后把它放回到模式空间中,
    且追加到现在已经存在于模式空间中的行的末尾——在这个例子中,就是追加到最后一行。简单来
    讲:任何包含模板northeast 的行都将被复制并追加到该文件的末尾。

    sed -e '/northeast/h' -e '$g' datafile (g和G的区别,g 会替换掉最后一行,而G是追加到其后面)

    h命令和x命令

    sed –e '/patricia/h' -e '/Margot/x' datafile

    命令x表示互换模式空间和保持缓冲区的内容。当模板patricia被匹配,该行将被保存到保持缓
    冲区中。当包含Margot 的行被找到,模式空间将与保持缓冲区交换彼此的行。简单地说,就是包含
    Margot的行被包含patricia的行替换了。

    -f sed 脚本

    sed -f scrript_file sed_file

    sed –n 'l' sed_file 打印所有包含不能打印字符的行

  • 相关阅读:
    centos6下安装部署hadoop2.2
    centos 卸载自带的 java
    完全分布式Hadoop2.3安装与配置
    hadoop安装与WordCount例子
    CentOS 6.5 下载地址
    碎片化
    DRM加密技术是怎么一回事
    DRM你又赢了:其API纳入HTML5标准
    java 对视频和图片进行加密解密
    HadoopDB:混合分布式系统
  • 原文地址:https://www.cnblogs.com/Berryxiong/p/5638325.html
Copyright © 2020-2023  润新知