linux之sed基础命令详解

sed (Stream  EDitor)是一个强大的字符流编辑器,输入一般是来自文件,默认情况下不编辑原文件,仅对模式空间中的数据作处理;而后,将模式空间打印到屏幕显示

sed基础用法

sed [options]'AddressCommond' file ...

[options]

  -n:静默模式,不再默认显示模式空间的内容

-i:直接修改原文件

-f:指定需执行的脚本文件,一般在脚本文件里编辑匹配模式

   -e:SCRIPT -e SCRIPT :可以同时执行多个脚本

   -r:表示使用拓展正则表达式

Address

1. startline,endline

      1,100

2./RegExp/

       /^root/

   3./pattern1/,/pattern2/

     表示第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,中间的所有行。

   4.LineNumber

     表示指定的行

   $:表示最后一行  $-1:表示倒数第二行

   5.Startline, +N

    从Startline开始,向后的N行,共N+1

Command:

   d: 删除指定的行

     sed '1,2d' /mnt/passwd

     sed '4,$-1d' /mnt/passwd

     sed '/nologin/d' /mnt/passwd

     sed '1,+3d' /mnt/passwd

   p:显示符合条件的行

     sed '/^\//p' /mnt/passwd

   a:\"string":在指定的行后面追加新行,内容为“string

     sed '2a\hello linux' /mnt/passwd

   c:\'string' :用新文本替换指定行文本  

     sed '1c\redhat' /mnt/passwd

   i:\string :在指定的行前面添加新行,内容为"string"   

     sed '2i\hello linux' /mnt/passwd

   r:FILE:将指定的文件添加至符合条件的行处

     sed '1,2r /etc/group' /mnt/passwd

     sed '$r /mnt/tuantuan.sh' /mnt/yy.sh >> /mnt/kiosk.sh (合并文件)

   w:将指定范围内的内容另存至指定的文件中

     sed '/nologin/w /mnt/123' /mnt/passwd

   s:查找并替换,默认只替换每行中第一次被匹配到的字符串

     s/pattern/string/修饰符

     sed 's/nologin/NOLOGIN/' /mnt/passwd

     sed 's/^\//#/' /mnt/kiosk.sh

     sed -r 's/^[[:space:]]+//' /mnt/passwd  ##删除行首的空白符

     sed 's/\(wer:\)[0-9]\(:gtrh\)/\17\2/g' /mnt/456 ##wei:3:gtrh行中数字替换成7

     sed 's/^#+//g' /mnt/yy.sh  ##删除/mnt/yy.sh文件中开头的#

     sed -r 's/^#[[:space:]]+//g' ##删除开头的#号及后面的空白字符

     sed -r 's/^[[:space:]]+#+//g' ##删除以空白字符后跟#号的空白字符及#

          g:全局变量

          i:忽略字符大小写

         

        sed 's/b..h/&r/g' /mnt/passwd

        sed 's/\(b..h\)/\1r/g' /mnt/passwd

         sed 's/b\(..h\)/B\1/g' /mnt/passwd

s/// 格式也可用 s###、s@@@ 代替

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章