Linux | sed

作者: pomela | 来源:发表于2019-04-08 21:44 被阅读49次

    以下介绍在生信中常用的sed命令。
    参考:https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.htmlhttp://man.linuxde.net/sed

    (1) a 表示 新增,i 表示 插入
    #在第2行后面加上“spider”这一字段,即“spider”出现在第3段
    cat -n  test.txt | sed '2a spider'
    #在第2行前面加上“spider”这一字段
    cat -n  test.txt | sed '2i spider' 
    #增加两行以上,如在第二行后面加入两行字,“how are you ”与“I'm fine , thank you ” 。注意:每行以反斜杠 \ 结尾,用于添加新的一行
    cat -n  test.txt | sed '2a  how are you \
    > I'm fine , thank you '
    
    (2) c 表示 替代
    #将第2-5行的内容替代为“spider”
    cat -n  test.txt | sed '2,5c spider'
    
    
    (3) d 表示 删除行;搜索某一字段并删除
    #删除第2行
    cat -n  test.txt |sed '2d'
    #删除第2-5行
    cat -n  test.txt | sed '2,5d'
    #删除5-最后一行
    cat -n  test.txt |sed '5,$d'
    
    #搜索“spider”这一字段并删除
    cat -n  test.txt | sed  '/spider/d'
    
    (4) -n 表示 选择/显示某一行或几行;搜索并显示
    #仅列出 /etc/passwd 文件内的第 5-7 行
    cat -n  test.txt | sed -n '5,7p'
    #搜索 /etc/passwd有spider关键字的行并显示
    cat -n  test.txt | sed -n '/spider/p'
    
    (5)数据搜索后再执行别的命令
    #搜索/etc/passwd,找到spider对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这一行:
    cat -n  test.txt | sed -n '/spider/{s/bash/blueshell/;p}'
    

    注:{s/待替换内容/替换成的内容/} ; p 表示打印行

    #如果只替换/etc/passwd的第一个bash关键字为blueshell,就退出{q}
    cat -n  test.txt | sed -n '/bash/{s/bash/blueshell/;p;q}'
    
    (6)数据搜索到之后再替换
    #前面已经讲过以整行进行替换,如将第2-5行的内容替代为“spider”
    cat -n  test.txt | sed '2,5c spider'
    
    #部分字段的替换,格式为 sed 's/要被取代的字串/新的字串/g'
    /sbin/ifconfig bond0  #查看本机IP地址为172.18.99.01,下一步需要将改IP取出
    /sbin/ifconfig bond0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
    

    注:替换格式为{s/待替换内容/替换成的内容/} ,g 表示行内全面替换;^ 匹配行开始,如:/^sed/匹配所有以sed开头的行;. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d;* 匹配0个或多个字符;匹配到以前的那个字符到最后一行结束;

    相关文章

      网友评论

        本文标题:Linux | sed

        本文链接:https://www.haomeiwen.com/subject/duqmiqtx.html