3.請執行命令取出linux中eth0的IP地址(考試題答案系列)

說明:本文爲老男孩linux培訓某節課前考試試題及答案分享博文內容的一部分,也是獨立成題的,你可以點下面地址查看全部的內容信息。
http://oldboy.blog.51cto.com/2561410/791245
特別說明:答題的思路技巧可能比做題本身更重要,這也是老男孩特別教導學生的學習方法。

3.請執行命令取出linuxeth0IP地址(請用cut,有能力者也可分別用awk,sed命令答)

解答:

某學生的答案:方法新穎。

grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0|cut -f 2 -d=

提示:

[root@oldboy ~]# grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0|cut -d= -f2

10.0.0.179

[root@oldboy ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0|grep IPADDR|cut -d= -f2

10.0.0.179

1cut

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|cut -d ":" -f2|cut -d " " -f1

10.0.0.162

2awk

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|awk -F ":" '{print $2}'|awk '{print $1}'

10.0.0.162

說明:這裏的awk同上文的cut,但是比cut功能強大的多,-F ":" 中的-F表示指定分割符:,如果不加-F默認就是空格分割符。後面的寫法是兩個單引號中間是一定一對大括號,然後大括號裏是print $n,這個n就是前面使用分割符後的第幾個字段,如第一字段就是$1,第二個就是$2,下面再舉一例:

[root@oldboy oldboy]# cat test.txt

oldboy zhaoyue xiangpan  #→以空格分,就是3個字段,$1oldboy $2zhaoyue $3xiangpan

[root@oldboy oldboy]# echo oldboy zhaoyue xiangpan >test.txt

[root@oldboy oldboy]# awk '{print $1}' test.txt

oldboy

[root@oldboy oldboy]# awk '{print $3}' test.txt

xiangpan

提示:有關awk的用法,在老男孩的課程當中會經常用到,希望大家可以積累此命令的用法,可以看到一個學一個,多記案例,而不是記枯燥的文字說明。記得去awk --helpman awk

3sed(正則)

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'  #→通過關鍵字inet addr過濾出需要的行。                  

         inet addr:10.0.0.162  Bcast:10.0.0.255  Mask:255.255.255.0  #→目標是取出10.0.0.162

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|sed 's/^.*addr://g'

10.0.0.162      Bcast:10.0.0.255  Mask:255.255.255.0

#→這裏是使用sed的替換語法加正則,^.*addr:表示匹配任意字符的開頭,中間也是任意字符,結尾爲addr:的字符串,即匹配“         inet addr:”,通過sed 's/^.*addr://g'將其替換爲空,也就是下面的結果。

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|sed 's/^.*addr://g'|sed 's/Bcast:.*$//g'

10.0.0.162

#→這裏是使用sed的替換語法加正則,Bcast:.*$部分表示匹配以Bcast:開頭,以多個任意字符結尾,即匹配“Bcast:10.0.0.255  Mask:255.255.255.0 通過sed 's/Bcast:.*$//g'將其替換爲空,也就是下面的結果。

技巧提示:

處理目標(獲取的字符串如上文的ip)前的字符串一般用以..開頭(^.*)來匹配開頭,匹配的結尾是實際的字符,如:“^.*addr:”表達式匹配“         inet addr:”,

而處理目標後的一般匹配的開頭是實際的字符,而結尾是用以...結尾(.*$)來匹配。如:Bcast:.*$部分表示匹配“Bcast:10.0.0.255  Mask:255.255.255.0。在舉一例:取mac地址:

[root@oldboy oldboy]# ifconfig eth0|grep HWaddr

eth0      Link encap:Ethernet  HWaddr 00:0C:29:1D:28:D5 

[root@oldboy oldboy]# ifconfig eth0|grep HWaddr|sed 's/^.*HWaddr//g'

00:0C:29:1D:28:D5 

#→此題是處理目標前的內容,所以,用“^.*HWaddr匹配“eth0     Link encap:Ethernet  HWaddr

正則表達式(需本週課後總結):

正則表達式就是處理字符串的方法,以行爲單位進行字符串的處理,通過一些特殊符號的輔助,可以讓用戶輕鬆搜索/替換某些特定字符串。

知識點摘錄說明:

本題涉及的基礎正則表達式特殊字符說明:

特殊字符

含義與例子

^word

搜索以字符(word)開頭的行。

例:grep -v '^#' oldboy.log

過濾掉以#行首(開始)的行,一般查看配置文件時會用到。

word$

搜索以字符(word)結尾的行。

例:grep -n '!$' oldboy.log

搜索以!(歎號)結尾的行

.(點號)

代表切只能代表“任意一個”字符,“一個”是一個任意字符

例:grep -n 'e.e' oldboy.log

搜索的字符串可以是(eve,(eae),(eee),(e e),但不能僅有(ee)ee之間一定且僅有一個字符,而空格符也是字符

*

重複零個或多個的前一個重複字符

例:grep -n 'ess*' oldboy.log

找出含有(es,(ess),(esss)等的字符串,注意,因爲(*)可以是0個,所以es       也是符合搜索字符串。另外,因爲(*)爲重複“前一個字符”的符號,因此,在(*)之前必須要緊接一個重複字符。任意字符則爲(.*

更詳細的內容請參考

1《老男孩linux實戰培訓教案--linux系統正則表達式精華篇》

2 man grep 然後搜索REGULAR EXPRESSIONS

 

sed拓展內容:

老男孩老師分享有關sed替換功能的小結:

sed替換模型:方框被▇替換成三角▲(會更改文件)

記憶方法:

sed -i 's///g' oldboy.log

sed -i 's###g' oldboy.log

#觀察特點:兩邊是引號,引號裏面的兩邊分別爲sg,中間是三個一樣的字符/#

每個字符/#中間前面的間隔就是被替換的內容,後面的間隔就是替換後的內容。

sed 's///g' file #→單引號裏兩邊是s(替換模式)和g(全局匹配替換) 中間是三個斜線,好記吧。

參數意義:

sed -i 's///g' oldboy.log

-i 表示修改文件內容。

gs聯合使用時,表示對當前行全局匹配替換(與單獨g意義不同)

s常說的查找並替換,用一個字符串替換成另一個

例子:方框▇三角▲互相替換例子

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's///g' oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i "s///g" oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's###' oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's###g' oldboy.log

老男孩老師提示:sed是一個強大的流編輯器命令,在工作中表現出色。尤其是字符替換功能

案例實踐:

[root@oldboy oldboy]# cat a.txt

zhangliang

[root@oldboy oldboy]# sed -e 's/zhangliang/mangyuxi/g' a.txt

mangyuxi

[root@oldboy oldboy]# cat a.txt

zhangliang #→文件內容並未被替換

[root@oldboy oldboy]# sed -i 's/zhangliang/mangyuxi/g' a.txt  #→插入替換修改原文件

[root@oldboy oldboy]# cat a.txt

mangyuxi #→文件內容已被替換

更多更詳細內容請參考以下課堂教案:

《老男孩linux實戰培訓教案-強大的流編輯器sed詳解指南》

《老男孩linux實戰培訓教案--awk詳解指南》



 

老男孩linux運維實戰培訓聯繫方式

諮詢:QQ: 70271111 357851641 31333741

電話:18911718229

網站地址:http://www.etiantian.org  http://oldboy.cc

blog:http://oldboy.blog.51cto.com

======================================================

歡迎廣到運維兄弟一起交流linux/unix網站運維技術!

網站運維交流羣:180056518 114580181 45039636 

老男孩 QQ:31333741 

mail:[email protected]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章