除了整行的处理模式之外,
sed
还可以用行为单位½行部分数据的搜寻并取代的功能喔!
基本上
sed
的搜寻与取代的与
vi
相当的类似!他有点像这样:
sed 's/
要被取代的字符串
/
新的字符串
/g'
上表中特殊字体的部分为关键词,请记下来!至于三个斜线分成两栏就是新旧字符串的替换啦!
我
们使用底下这个取得
IP
数据的范例,一段一段的来处理给您瞧瞧,让你了½一下什么是咱们所谓的
搜寻并取代吧!
步
骤
一:先
观
察原始
讯
息,利用
/sbin/ifconfig
查
询
IP
为
何?
[dmtsai@study ~]$
/sbin/ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet
192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::5054:ff:fedf:e174 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:df:e1:74 txqueuelen 1000 (Ethernet)
.....(
以下省略
).....
#
因
为
我
们还没
有
½
到
IP
,
这
里你先有
个
概念即可啊!我
们
的重
点
在第二行,
#
也就是
192.168.1.100
那一行而已!先利用
关键词
捉出那一行!
步
骤
二:利用
关键词
配合
grep
撷
取出
关键
的一行
数
据
[dmtsai@study ~]$
/sbin/ifconfig eth0 | grep 'inet '
inet
192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
#
当场½
剩下一行!要注意,
CentOS 7
与
CentOS 6
以前的
ifconfig
指令
输
出
½
果不太相同,
#
鸟
哥
这个
范例主要是
针对
CentOS 7
以后的喔!½下
来
,我
们
要
½开
始到
addr:
通通
删
除,
#
就是像底下
这样
:
#
inet
192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
#
上面的
删
除
关键
在于『
^.*inet
』啦!正
规
表示法出
现
!
^_^
步
骤
三:
½
IP
前面的部分予以
删
除
[dmtsai@study ~]$
/sbin/ifconfig eth0 | grep 'inet ' | sed 's/^.*inet
//g'
192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
#
仔
细
与上
个
步
骤
比
½
一下,前面的部分不
见
了!½下
来则
是
删
除后
续
的部分,亦即:
192.168.1.100
netmask 255.255.255.0 broadcast 192.168.1.255
#
此
时
所需的正
规
表示法
为
:『
' *netmask.*$
』就是啦!
步
骤
四:
½
IP
后面的部分予以
删
除
[dmtsai@study ~]$
/sbin/ifconfig eth0 | grep 'inet ' | sed 's/^.*inet //g'
\
>
| sed 's/ *netmask.*$//g'
192.168.1.100
透过这个范例的练习也½议您依据此一步骤来研究你的指令!就是先观察,然后再一层一层的试做,
如果有做不对的地方,就先予以修改,改完之后测试,成功后再往下继续测试。以鸟哥上面的½绍中,
那一大串指令就做了四个步骤!对吧!
^_^