日历

2013年九月
« 5月   10月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

最近评论

    linux/unix基础知识

    sed的几个常用用法

    linux下sed是个流文本编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出或使用sed -i参数进行保存。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等.
    下面介绍linux下sed命令几个经典用法

    1. 去掉空行
    sed ‘/^$/d’  yourfile

    2. 在shell中,用某个变量(参数)替换文本中的指定字符串,如果在sed中引用变量,必须用双引号“哦。否则变量不生效
    如用$myarg变量替换myfreelinux.com
    myarg=”test arg”
    echo “linux site:http://www.myfreelinux.com”  | sed “s/myfreelinux.com/$myarg/g”
    结果:
    linux site:http://www.test arg

    3. 删除(去掉)每行末尾的最后一个字符,行末尾的任意一个字符都会被删除哦,常用场景构造mysql多行insert值的sql语句
    sed ‘s/.$//’  yourfile

    4.替换字符(含有/特殊符号的),这里命令中的斜杠/可以用其他符号代替,如用#号
    如把/用@替换
    echo “http://myfreelinux.com/”  | sed ‘s#/#@#g’
    如果一定要用/斜杠的话,命令必须把要替换的斜杠先转义
    echo “http://myfreelinux.com/” | sed ‘s/\//@/g’

    5. 在行首或者行尾增加字符串
    如在行首增加myfreelinux.com
    echo “mychar”  | sed ‘s/^/myfreelinux.com/g’
    在行尾增加myfreelinux.com
    echo “mychar”  | sed ‘s/$/myfreelinux.com/g’

    6.删除第N行:
    sed  ‘Nd’ filename

    删除第M到N行:
    sed  ‘M,Nd’ filename

    7.删除匹配内容所在的行
    sed /PATTERN/d filename

    8.匹配内容后增加某内容
    在匹配forbag.cn内容后增加myfreelinux.com这一行内容
    sed ‘/forbag.cn/a\myfreelinux.com’ youfile
    在匹配forbag.cn内容前增加myfreelinux.com这一行内容
    sed ‘/forbag.cn/i\myfreelinux.com’ youfile

    9.匹配字符串,然后在匹配的行之下插入多行文本(即插入一个文件),该文本预先写入某个文件
    在yourfile匹配myfreelinux.com内容后增加forbag.txt这个文件
    sed -i ‘/myfreelinux.com r forbag.txt’  yourfile