除了整行的处理模式之外,
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
透过这个范例的练习也½议您依据此一步骤来研究你的指令!就是先观察,然后再一层一层的试做,
如果有做不对的地方,就先予以修改,改完之后测试,成功后再往下继续测试。以鸟哥上面的½绍中,
那一大串指令就做了四个步骤!对吧!
^_^