简单之说sed

760阅读 0评论2012-09-02 initrdimg
分类:

使用sed在文本中定位文本的命令

    x                   x为一行号,比如1
    x,y                 表示行号范围从x到y,如2,5表示从第2行到第5行
    /pattern/           查询包含模式的行,如/disk/或/[a-z]/
    /pattern/pattern/   查询包含两个模式的行,如/disk/disks/
    /pattern/,x         在给定行号上查询包含模式的行,如/disk/,3   从包含disk的行到第三行。
    x,/pattern/         通过行号和模式查询匹配行,如 3,/disk/   从3行到包含disk的行。  
    x,y!                查询不包含指定行号x和y的行            !取反。      
 
基本sed编辑命令

    p     打印匹配行 
    P     打印第一行  
    r     从另一个文本中读文本          
    =     打印当前行号                 
    s     使用替换模式替换相应模式
    w     写文本到一个文件
    e     多个sed可结合
    d     删除定位行
    D     删除模版中的第一行                   
    q     第一个模式匹配完成后退出或立即退出
    l     显示与八进制ASCII代码等价的控制字符      
    y     传送字符
    g     将模式2粘贴到/pattern n/
    n     不打印; sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑),
    c     下一命令是编辑命令,使用多项编辑时加入此选项
    f     如果正在调用sed脚本文件,使用此选项,此选项通知sed一个脚本文件支持所用的sed命令,
    a/    在定位行号后附加新文本信息
    c/    用新文本替换定位文本        
    i/    在定位行号后插入新文本信息

基本sed编程举例
    使用p(rint)显示行: sed -n '2p' zhouli.txt           只显示第2行,使用选项n
    打印范围:  sed -n '1,3p' zhouli.txt                 打印第1行到第3行
    打印模式:  sed -n '/movie/'p zhouli.txt             打印含movie的行
    使用模式和行号查询:  sed -n '3,/movie/'p temp.txt   只在第3行到movie的行并打印
    显示整个文件:  sed -n '1,$'p temp.txt               $为最后一行
    任意字符:  sed -n '/.*ing/'p temp.txt               注意是.*ing,而不是*ing

快速删除一行命令
    's//.$//g'         删除以句点结尾行
    '-e /abcd/d'       删除包含abcd的行
    's/[][][]*/[]/g'   删除一个以上空格,用一个空格代替
    's/^[][]*//g'      删除行首空格
    's//.[][]*/[]/g'   删除句号后跟两个或更多的空格,用一个空格代替
    '/^$/d'            删除空行
    's/^.//g'          删除第一个字符,区别  's//.//g'删除所有的句点
    's/COL/(.../)//g'  删除紧跟COL的后三个字母
    's/^////g'         删除路径中第一个/
上一篇:bash shell 提取xml 文件内容
下一篇:Squid反向代理