zoukankan      html  css  js  c++  java
  • sed命令——用来对文件数据的 选取、替换、删除


    sed格式: sed 选项 '动作' 文件名 文件内容

    选项
    -n     不加-n则打印文件全部数据 ;   命令加上-n,系统只会输出 sed处理后的文件数据;
    -p     打印第几行
    -e     允许使用多条sed命令编辑文件数据
    -r     支持正则表达式
    -i     sed直接修改文件数据,不输出到屏幕

    动作
    a     行追加,在当行后插入一行或多行,
    c     行替换 共有属性除最后一行,其他都要加
    i      插入,在当行前插入一行或多行。
    d       删除指定的行
    s       字符替换 格式:"行范围s/used/new/g"

    查找匹配
      .            单字通配符
    [0-9]       匹配0-9
    [^a-z]     不匹配a-z的所有其它字符
    “.*”      匹配””内任何字符串
    ^            匹配行开始
    $            匹配行结束

    元字符集,匹配符
    ^       锚定行的开始. 如/^sed/ 匹配所有以sed开头的行
    $       锚定行的结束. 如/sed$/ 匹配所有以sed结尾的行
    .       匹配一个非换行符. 如/sed/ 匹配s后接一个任意字符然后是d
    " * "       匹配零或多个字符. 如/
    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结尾的单词行
    x{m}        重复字符x,m次. 如/o{5}匹配包含5个o的行
    x{m,}        重复字符x,至少m次. 如 /o{5,}/匹配至少有5个o的行
    x{m,n}        重复字符x,至少m次.把多余n次. 如 /o{5,10}/匹配5-10个o的行



    实验sed -p

    查看文件text的第二行

    
    [root@linux Desktop]# cat text
    a
    b
    c
    d
    e
    
    [root@linux Desktop]# sed  ‘2p’  text
    a
    b
    b
    c
    d
    e
    
    [root@linux Desktop]# sed -n '2p'  text
    b
    



    实验 sed -n
    查看文件text的2-4行的内容
    [root@linux Desktop]# sed  -n '2,4p'  text
    b
    c
    d
    



    实验动作d
    删除文件text的3-5行
    [root@linux Desktop]# cat text
    a
    b
    c
    d
    e
    
    
    [root@linux Desktop]# sed  '3,5d' text
    a
    b
    
    
    [root@linux Desktop]# cat text
    a
    b
    c
    d
    e
    
    
    [root@linux Desktop]# sed  -i '3,5d' text
    [root@linux Desktop]# cat text
    a
    b
    
    

    删除文件text的2行至末尾

    [root@linux Desktop]# cat text
    a
    b
    c
    d
    e
    
    
    [root@linux Desktop]# sed   '2,$d' text
    [root@linux Desktop]# cat text
    a
    

    删除文件text第二行,并显示行号

    [root@linux Desktop]# nl text  |sed '2d'
         1	a
         3	c
         4	d
         5	e
    
    注:sed不加i,只是改了从模式空间(pattern space)的打印内容,并没有真实地修改原文件



    实验动作a

    向text文件第二行插入suv字符

    [root@linux Desktop]# cat text 
    a
    b
    c
    d
    e
    
    
    [root@linux Desktop]# sed  '2a  suv ' text 
    a
    b
    suv 
    c
    d
    e
    
    



    实验动作i
    向text文件第二行前插入suv字符
    [root@linux Desktop]# cat text 
    a
    b
    c
    d
    e
    
    
    [root@linux Desktop]# sed '2i  suv' text 
    a
    suv
    b
    c
    d
    e
    
    

    向text文件第二行**前**插入"suv"行,插入"Tom"行,插入"Lisa"行
    
    [root@linux Desktop]# sed  '2i  suv 
    Tom
    > Lisa' text
    a
    suv 
    Tom
    Lisa
    b
    c
    d
    e
    
    



    实验动作c
    把文件text的3行的内容换成 MM GG
    [root@linux Desktop]# cat text 
    a
    b
    c
    d
    e
    
    
    [root@linux Desktop]# sed  '3c MM GG' text 
    a
    b
    MM GG
    d
    e
    
    
    [root@linux Desktop]# sed '3c MM
    >  GG' text
    a
    b
    MM
    GG
    d
    e
    



    实验动作s

    把text文件中的第三行中 字符c换成suv

    [root@linux Desktop]#cat text
    a
    b
    MMcGG
    d
    e
    
    [root@linux Desktop]# sed '3s/c/suv/g'   text 
    a
    b
    MMsuvGG
    d
    e
    
    



    sed -e
    在text文件的第三行,第四行删掉
    [root@linux Desktop]#cat text
    a
    b
    c
    d
    e
    
    
    [root@linux Desktop]# sed -e '4d ; 5d'   text
    a
    b
    c
    



    提升
    把text文件注释每一行
    [root@linux Desktop]# cat text 
    a
    b
    c
    d
    e
    
    [root@linux Desktop]# sed '1,5s/^/#/g' text
    #a
    #b
    #c
    #d
    #e
    




    把text文件的MM GG 字符串删除

    [root@linux Desktop]# cat text 
    a   tom     make
    b   MM      jake
    c   hims    lisa
    d   lina    GG
    e   gouta   bide
    
    [root@linux Desktop]# sed ' 2s/MM//g ; 4s/GG//g  'text
    a   tom     make
    b           jake
    c   hims    lisa
    d   lina    
    e   gouta   bide
    
    当你的才华配不上你的野心,努力的时候到了!
  • 相关阅读:
    一套C#语言的日志控制系统
    unity自义定摇杆
    2014 西安邀请赛小结
    Poj 1112 Team Them Up!
    Poj 1112 Rebuilding Roads(树形DP+背包)
    USACO Cow Pedigrees
    Poj 2284 That Nice Euler Circuit
    LA 3942 Remember the Word
    HDU 3065 病毒侵袭持续中
    HDU 2896 病毒侵袭
  • 原文地址:https://www.cnblogs.com/xwdzj/p/13973848.html
Copyright © 2011-2022 走看看