sed 练习

[root@server3 mnt]# cat -n passwd

     1  root:x:0:0:root:/root:/bin/bash

     2  bin:x:1:1:bin:/bin:/sbin/nologin

     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin

     4  rooot

     5  rooooot

     6  Root

     7  ROOOT

     8  roooooot.

     9  test

    10 

    11 

    12  tes0t.

    13  adm:x:3:4:adm:/var/adm:/sbin/nologin.

 

1.删除与增加

删除2-5行

[root@server3 mnt]# cat  -n passwd  | sed   '2,5d'

     1  root:x:0:0:root:/root:/bin/bash

     6  Root

     7  ROOOT

     8  roooooot.

     9  test

    10 

    11 

    12  tes0t.

    13  adm:x:3:4:adm:/var/adm:/sbin/nologin.

增加字符

[root@server3 mnt]# cat  -n passwd  | sed   '2a are you ok'

     1  root:x:0:0:root:/root:/bin/bash

     2  bin:x:1:1:bin:/bin:/sbin/nologin

are you ok

     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin

     4  rooot

     5  rooooot

     6  Root

     7  ROOOT

     8  roooooot.

     9  test

    10 

    11 

    12  tes0t.

    13  adm:x:3:4:adm:/var/adm:/sbin/nologin.

增加两行字

[root@server3 mnt]# cat  -n passwd  | sed   '2a are you ok?

> fine'

     1  root:x:0:0:root:/root:/bin/bash

     2  bin:x:1:1:bin:/bin:/sbin/nologin

are you ok?

fine

     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin

     4  rooot

     5  rooooot

     6  Root

     7  ROOOT

     8  roooooot.

     9  test

    10 

    11 

    12  tes0t.

    13  adm:x:3:4:adm:/var/adm:/sbin/nologin.

 

 

 

2.以行为单位的替换与显示功能

 

2-5行替换成sorry

[root@server3 mnt]# cat  -n passwd  | sed   '2,5c sorry'

     1  root:x:0:0:root:/root:/bin/bash

sorry

     6  Root

     7  ROOOT

     8  roooooot.

     9  test

    10 

    11 

    12  tes0t.

    13  adm:x:3:4:adm:/var/adm:/sbin/nologin.

 

仅列出文件内的6-9行

[root@server3 mnt]# cat  -n passwd  | sed -n  '6,9p'  #若不加n,6-9行会重复输出

     6  Root

     7  ROOOT

     8  roooooot.

     9  test

 

 

3.部分数据的查找并替换的功能

sed的查找个查找格式如下

    sed 's/要被替换的字符串/新的字符串/g'

通过查找来显示出自己的ip

[root@server3 mnt]# ip addr | grep eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 172.25.8.3/24 brd 172.25.8.255 scope global eth0

[root@server3 mnt]# ip addr | grep 'eth0$'

    inet 172.25.8.3/24 brd 172.25.8.255 scope global eth0

[root@server3 mnt]# ip addr | grep 'eth0$' | sed 's/inet//g'

     172.25.8.3/24 brd 172.25.8.255 scope global eth0

[root@server3 mnt]# ip addr | grep 'eth0$' | sed 's/inet//g' |sed 's/brd.*$//g'

     172.25.8.3/24

 

 

 

 

原文地址:https://www.cnblogs.com/zhengyipengyou/p/10284432.html