sed

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed相关的知识,希望对你有一定的参考价值。

1.1用法与原理
?sed [option]… ‘script’ file

技术图片

1.2常用选项

?-n:取消默认输出
?-e:多点编辑
?-f :/PATH/TO/SCRIPT_FILE从指定文件中读取编辑脚本
?-r:支持使用扩展正则表达式

1.3地址定界


?(1)不给地址:对全文进行处理

?(2)单地址:
#:指定的行
    /pattern/:被此处模式所能够匹配到的每一行

?(3)地址范围:
   #,#
   #,+#
   /pat1/,/pat2/
   #,/pat1/
   #;#;#分隔的多行

1.3.1实践操作

环境准备
[root@oldboyedu-02 oldboy]# cat person.txt 
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
?-n取消默认输出,只打印想要的内容
[root@oldboyedu-02 oldboy]# sed ‘1p‘ person.txt 
101,oldboy,CEO
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[root@oldboyedu-02 oldboy]# sed -n ‘1p‘ person.txt 
101,oldboy,CEO

?连续多行
[root@oldboyedu-02 oldboy]# sed -n ‘2,4p‘ person.txt 
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO

?找出包含oldboy的行 到 包含104的行
[root@oldboyedu-02 oldboy]# sed -n ‘/oldboy/,/^104/p‘ person.txt 
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO

[root@oldboyedu-01 ~]# awk ‘/root/,/operator/print $0‘ /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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

?包含oldboy的行 或 yy的行
[root@oldboyedu-02 oldboy]# sed -rn ‘/oldboy|yy/p‘ person.txt
101,oldboy,CEO
104,yy,CFO
[root@oldboyedu-02 oldboy]# egrep ‘oldboy|yy‘ person.txt
101,oldboy,CEO
104,yy,CFO

?打印分隔的多行
[root@oldboyedu-02 oldboy]# sed -n ‘1p;2p;4p‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
104,yy,CFO

?打印第二行和后面三行
[root@oldboyedu-01 ~]# 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

?打印第二行到包含root的行
[root@oldboyedu-01 ~]# sed -n ‘2,/root/p‘ /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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

[root@oldboyedu-01 ~]# awk ‘NR==2,/root/‘ /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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

1.4编辑命令

?d:删除
?p:显示模式空间中的内容
?a \text:在行后面追加文本,支持使用\n实现多行追加
?i \text:在行前面插入文本,支持使用\n实现多行插入
?c \text:替换行尾单行或多行文本
?w /path/to/somefile:保存模式空间匹配到的行到指定文件中
?r /path/from/somefile:读取指定文件的文本流到模式空间中匹配到的行后
?=:为模式空间中的行打印行号
?!:取反条件
?s///g:支持使用其他分隔符,s###g,s@@@g
?s:替换每行的第一处匹配的内容
?g:行内全局替换
?p:显示替换成功的行
?w:/path/to/somefile:将替换成功的结果保存到指定文件中
?&表示被替换的内容

1.4.1实践操作

?a 追加append,在指定行后添加一行或多行文本
 [root@oldboyedu-02 oldboy]# sed  ‘3a 103.5,xiaoyu,CXO‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
103.5,xiaoyu,CXO
104,yy,CFO
105,feixue,CIO

?i 插入insert,在指定行前添加一行或多行文本
[root@oldboyedu-02 oldboy]# sed  ‘3i 103.5,xiaoyu,CXO‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103.5,xiaoyu,CXO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
单行追加
echo ‘test‘ >>person.txt

?增加多行
[root@oldboyedu-02 oldboy]# sed ‘$a 106\n107\n108‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106
107
108
下面比较常用
[root@oldboyedu-02 oldboy]# cat >>person.txt<<EOF
> 106 106
> 107 107
> EOF

?删除
[root@oldboyedu-02 oldboy]# cat -A person.txt
101,oldboy,CEO$
$
102,zhangyao,CTO$
103,Alex,COO$
$
104,yy,CFO$
105,feixue,CIO$
106 106$
107 107$

[root@oldboyedu-02 oldboy]# sed ‘/^$/d‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106 106
107 107

[root@oldboyedu-02 oldboy]# sed -n ‘/^$/p‘ person.txt

[root@oldboyedu-02 oldboy]# sed -n ‘/^$/!p‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106 106
107 107

[root@oldboyedu-02 oldboy]# sed ‘$d‘ person.txt
101,oldboy,CEO

102,zhangyao,CTO
103,Alex,COO

104,yy,CFO
105,feixue,CIO
106 106

[root@oldboyedu-02 oldboy]# sed ‘$!d‘ person.txt
107 107
 [root@oldboyedu-02 oldboy]#

[root@oldboyedu-02 oldboy]# awk ‘!/^$/‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106 106
107 107

[root@oldboyedu-02 oldboy]# egrep -v ‘^$‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106 106
107 107

?替换
-i修改文件内容
-i.bak 先把源文件备份,然后替换内容
s单独使用,将每一行中的第一处匹配的字符串进行替换
g global 每一行进行全部替换

[root@oldboyedu-02 oldboy]# sed -i.bak ‘s#o#AAAAA#g‘ person.txt
[root@oldboyedu-02 oldboy]# cat person.txt.bak 
101,oldboy,CEO

102,zhangyao,CTO
103,Alex,COO

104,yy,CFO
105,feixue,CIO
106 106
107 107

[root@oldboyedu-02 oldboy]# cat person.txt
101,AAAAAldbAAAAAy,CEO

102,zhangyaAAAAA,CTO
103,Alex,COO

104,yy,CFO
105,feixue,CIO
106 106
107 107

含有变量的替换时,要使用""
[root@oldboyedu-02 oldboy]# x=oldboy
[root@oldboyedu-02 oldboy]# y=oldgirl
[root@oldboyedu-02 oldboy]# cat person.txt
101,oldboy,CEO

102,zhangyao,CTO
103,Alex,COO

104,yy,CFO
105,feixue,CIO
106 106
107 107

[root@oldboyedu-02 oldboy]# sed "s#$x#$y#g" person.txt
101,oldgirl,CEO

102,zhangyao,CTO
103,Alex,COO

104,yy,CFO
105,feixue,CIO
106 106
107 107

?删除/boot/grub/grub.conf文件中所有以空白开头的行的行首的空表字符
[root@oldboyedu-01 oldboy]# cat /boot/grub/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-696.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-696.el6.x86_64.img

[:blank:]                  空白字符(空格和制表符)
[:space:]       \s         所有空格符(比[:blank:]包含的范围广)
使用[:space:]
[root@oldboyedu-01 oldboy]# sed -r ‘#^[[:space:]]##g‘ /boot/grub/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-696.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-696.el6.x86_64.img
[root@oldboyedu-01 oldboy]# 
使用[ ]代表空格不好使,通过vim编辑器查看,也不是空格
[root@oldboyedu-01 oldboy]# sed -r ‘s#^[ ]+##g‘ /boot/grub/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-696.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-696.el6.x86_64.img
[root@oldboyedu-01 oldboy]# 

?删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
[root@oldboyedu-01 oldboy]# cat /etc/fstab |sed -r ‘s#^[#][ ]+##g‘

#
/etc/fstab
Created by anaconda on Mon Feb 18 12:19:50 2019
#
Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /                       ext4    defaults        1 1
UUID=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot                   ext4    defaults        1 2
UUID=b6a11888-75c1-4a5f-98fa-32c323404e4e swap                    swap    defaults        0 0
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

[root@oldboyedu-01 oldboy]# cat /etc/fstab |sed -r ‘s#^[#][[:space:]]+##g‘

#
/etc/fstab
Created by anaconda on Mon Feb 18 12:19:50 2019
#
Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /                       ext4    defaults        1 1
UUID=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot                   ext4    defaults        1 2
UUID=b6a11888-75c1-4a5f-98fa-32c323404e4e swap                    swap    defaults        0 0
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
[root@oldboyedu-01 oldboy]# 
要使用[[:space:]],如下[:space:]是不管用的
[root@oldboyedu-01 oldboy]# cat /etc/fstab |sed -r ‘s#^[#][:space:]+##g‘

#
# /etc/fstab
# Created by anaconda on Mon Feb 18 12:19:50 2019
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /                       ext4    defaults        1 1
UUID=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot                   ext4    defaults        1 2
UUID=b6a11888-75c1-4a5f-98fa-32c323404e4e swap                    swap    defaults        0 0
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
[root@oldboyedu-01 oldboy]# 

?echo一个绝对路径给sed命令,取出其基名,取出其目录名
[root@m01 oldboy]# echo "/opt/test/wew" |sed -r ‘s#.*/##g‘
wew

?删除UUID开头的行
[root@m01 oldboy]# sed ‘/^UUID/d‘ /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Feb 18 12:19:50 2019
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
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

?删除空白行
[root@m01 oldboy]# sed ‘/^$/d‘ /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Mon Feb 18 12:19:50 2019
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /                       ext4    defaults        1 1
UUID=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot                   ext4    defaults        1 2
UUID=b6a11888-75c1-4a5f-98fa-32c323404e4e swap                    swap    defaults        0 0
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
[root@m01 oldboy]# 

?符合条件的行后面追加内容
[root@m01 oldboy]# sed ‘/^UUID/a wewewew‘ /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Feb 18 12:19:50 2019
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /                       ext4    defaults        1 1
wewewew
UUID=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot                   ext4    defaults        1 2
wewewew
UUID=b6a11888-75c1-4a5f-98fa-32c323404e4e swap                    swap    defaults        0 0
wewewew
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
[root@m01 oldboy]# 

?打印符合条件行的行号
[root@m01 oldboy]# sed ‘/UUID/=‘ /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Feb 18 12:19:50 2019
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
9
UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /                       ext4    defaults        1 1
10
UUID=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot                   ext4    defaults        1 2
11
UUID=b6a11888-75c1-4a5f-98fa-32c323404e4e swap                    swap    defaults        0 0
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
[root@m01 oldboy]# 

?!取反
[root@m01 oldboy]# sed -n ‘/UUID/p‘ /etc/fstab 
UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /                       ext4    defaults        1 1
UUID=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot                   ext4    defaults        1 2
UUID=b6a11888-75c1-4a5f-98fa-32c323404e4e swap                    swap    defaults        0 0
[root@m01 oldboy]# sed -n ‘/UUID/!p‘ /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Feb 18 12:19:50 2019
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
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
[root@m01 oldboy]# 

?!替换追加,&代表前面匹配的内容
[root@m01 oldboy]# sed ‘s#UUID#&NEW#g‘ /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Feb 18 12:19:50 2019
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUIDNEW=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /                       ext4    defaults        1 1
UUIDNEW=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot                   ext4    defaults        1 2
UUIDNEW=b6a11888-75c1-4a5f-98fa-32c323404e4e swap                    swap    defaults        0 0
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
[root@m01 oldboy]# 

1.5sed后向引用

sed -n ‘s#()()#\1\2#gp‘ file
当在前面匹配部分用小括号的时候,第一个括号内容,可以在后面部分用\1输出
第二个括号内容,可以在后面部分用\2输出
[root@m01 oldboy]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:BE:11:5D  
          inet addr:10.0.0.61  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:febe:115d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10361 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7372 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:970097 (947.3 KiB)  TX bytes:905329 (884.1 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:BE:11:67  
          inet addr:172.16.1.61  Bcast:172.16.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:febe:1167/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1041 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:62568 (61.1 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:686 errors:0 dropped:0 overruns:0 frame:0
          TX packets:686 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:60368 (58.9 KiB)  TX bytes:60368 (58.9 KiB)

[root@m01 oldboy]# ifconfig|sed -nr ‘s/.*dr:(.*) Bc/\1/g‘
[root@m01 oldboy]# ifconfig|sed -nr ‘s/.*dr:(.*) Bc/\1/gp‘
10.0.0.61 ast:10.0.0.255  Mask:255.255.255.0
172.16.1.61 ast:172.16.1.255  Mask:255.255.255.0
[root@m01 oldboy]# ifconfig|sed -nr ‘s/.*dr:(.*) Bc.*/\1/gp‘
10.0.0.61 
172.16.1.61 
[root@m01 oldboy]# 
切换第一列和最后一列
[root@m01 oldboy]# sed -nr ‘s#(.*)(:.*:)(/.*$)#\3\2\1#gp‘ /etc/passwd
/bin/bash:/root:root:x:0:0:root
/sbin/nologin:/bin:bin:x:1:1:bin
/sbin/nologin:/sbin:daemon:x:2:2:daemon
/sbin/nologin:/var/adm:adm:x:3:4:adm
/sbin/nologin:/var/spool/lpd:lp:x:4:7:lp
/bin/sync:/sbin:sync:x:5:0:sync
/sbin/shutdown:/sbin:shutdown:x:6:0:shutdown

以上是关于sed的主要内容,如果未能解决你的问题,请参考以下文章

Sed教程之Sed语法

sed和awk之sed篇(含sed高级用法)

sed 在指定行插入?

sed的增删改查sed常见问题

sed打印指定范围

sed删除怎么生效