sed用法小结

  sed是linux下非常常用的一款流编辑器(stream editor),主要以行为单位进行编辑,通常可以进行删除,替换,新增等操作,是linux运维中十分重要的工具。

  一,sed的基本用法

sed [options]  'AddressCommand' file ...

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

    -i: 直接编辑原文件

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

    -f /path/to/seg_script: 将sed命令写成脚本,直接调用脚本的sed命令执行

    -r: 使用扩展正则表达式

sed默认不编辑原文件,仅仅对模式空间中的数据进行处理,而后,处理结束后,将模式空间打印输出到屏幕上


Address:

1: Startline,Endline

  比如1,100,表示从第1行到第100行,$表示最后一行

# sed -n '1,5p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

2:/RegExp/

  支持正则表达式,/^root/ 表示以root开头的行

3:/pattern1/,/pattern2/

  第一次被pattern1匹配的行开始,到最后被pattern2匹配的行结束,这中间的所有行

# sed -n '/^tmpfs/,/^proc/p' /etc/fstab
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

4: LineNumber

  指定的行

5:StartLine, +N

  从startline开始,向后的N行,(一共是N+1行)

# sed -n '2,+3p' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 Command:

    d: 删除符合条件的行

    p: 显示符合条件的行

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

        \n: 可以换行

    i \string: 在指定行前面追加新行,内容为”string“

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

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

    s/pattern/string/修饰符: 查找并替换,默认只替换每行中的第一次被模式匹配到的字符串

      g: 全部替换

      i: 忽略字符大小写

      s### s@@@ 分隔符不仅限于///


实例:

1,修改网卡eth0配置文件中ONBOOT为yes

# sed -i 's@\(ONBOOT=\).*@\1yes@' /etc/sysconfig/network-scripts/ifcfg-eth0

2,替换/etc/inittab文件中“id:3:initdefault:”一行中的数字为5

# sed -i 's@\(id:\)[0-9]\(:initdefault:\)@\13\2@g' /etc/inittab

3,删除/etc/inittab文件中开头的#号

# sed  's/^#//g' /etc/inittab

4,删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#

# sed -r 's@^[[:space:]]+#@@g' test.sh

5, 删除/etc/grub.conf文件中行首的空白字符

sed -r 's@^[[:space:]]+@@g' /etc/grub.conf


你可能感兴趣的:(linux,Stream,File,表达式,编辑器)