sed #流编辑器

  • Post author:
  • Post category:其他
sed #流编辑器,一次处理一行的内容
    -n #使用安静(silent)模式,在一般sed的用法中,所有来自STDIN的数据一般都会被列出到终端上,但
    如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来
    -e #直接在命令列模式上进行sed的动作编辑
    -f #直接将sed动作写在一个文件内,-f filename则可以运行内的sed动作
    -r #sed的动作支持的是延伸型正规表示法的语法.默认是基础正规表示法语法
    -i #直接修改读取的文件内容,而不是输出到终端
   动作
   a#新增,a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
   c#取代,c的后面可以接字串,这些字串可以取代n1,n2之间的行
   d#删除 ,因为是删除 ,所有d后面通常不接任何东西
   如: sed "3d" file#删除第三行
       sed "1,3d" file #删除1到3行
       sed "1d;3d;5d"  #删除1.3.5行
       sed "/^$/d" #删除空行
       sed "/abc/d" #删除所有含有abc的行
       sed "1, /def/d"#删除第一行到def之间的行,包括其自身
       sed "/abc/, +3d"#删除含有abc的行之后,再删除3行
       sed "/abc/, ~3d"#删除含有abc的行开始,共删除3行
       sed "1-2d"#从第1行开始,每2行删除一行,删除奇数行
       sed "2-2d"#从第2行开始,每2行删除一行,删除偶数行
       sed "$d"#删除最后一行不能加-n
       sed "/dd\|cc/d"删除有dd或者cc的行
   i#插入,i的后面可以接字符串,面这些字串会在新的一行出现(目前的上一行)
   * p#列印,亦即将某个选择的数据印出,通常P会与参数sed -n 一起运行
   如: sed -n "3p"file #显示三行
       sed -n "1,3p"#显示第三行
       sed -n "2,+3p"#显示第二行,及后面的三行
       sed -n "\$p"#显示最后一行
       sed -n "1p;3p;5p;"#只显示文件1,2,5行
       sed -n "$="#显示文件行数
   * s#替换,可以直接进行取代的工作,也可以在指定位置追加字符,通常这个s的动作可以搭配正规表示法,如:1,20s/old/new/g
    如: sed "s/\(all\)/bb/g"/g #是对文本里所有的指定的字符进行替换
        sed -r "s/(all)/bb/"
        \1 \2 对原文件进行分组
        sed  -r "s/(查)(找)/\1qq\2/"#在"查"和"找"之间加入"qq"

版权声明:本文为wenson0705原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。