awk 獲取ip位址的學習

2021-09-10 17:42:50 字數 1713 閱讀 9123

請執行命令取出linux中eth0的ip位址(請用cut,有能力者也可分別用awk,sed命令答)。

解答:方法一【此法為綠葉】:如果用awk來處理的話,一般的同學可能會用下面的辦法實現:

[root@oldboy ~]# ifconfig eth0|grep 'inet addr'|awk-f ":" ''|awk ''

10.0.0.162

小結:這個方法是常規方法,很好。但是我們有沒有更簡單的awk實現方法呢?往下看。

方法二【此法為小紅花】:通過awk同時使用多個分隔符來實現:

[root@oldboy ~]# ifconfig eth0|grep 'inet addr'|awk -f '[ :]' ''

192.168.1.186

本答案的最大缺點就是計算$n的時候很費勁,因為inet前面有多個空格,查到$13,真是不容易,如此看來從實現時間上可能還不如第乙個方法快呢?那好引出我們今天的關鍵答案案例。

方法三【大紅花出場】:通過awk同時使用多個分隔符,然後通過正則匹配多個分隔符的方法來實現:

[root@oldboy ~]# ifconfig eth0 |awk -f '[ :]+' 'nr==2 '

10.0.0.185

我們來說明下這個簡單易用的好辦法:

1)awk -f 後面跟分隔符『[空格:]+』,其中[空格:]多分隔符寫法,意思是以空格或冒號做分隔,後面的"+"號是正規表示式,意思是匹配前面空格或冒號,兩者之一的1個或1個以上。

2)nr==2和sed -n "2p",相當,意思都是選擇第幾行,例:

[root@oldboy ~]# ifconfig eth0|awk nr==2

inet addr:10.0.0.185  bcast:10.0.0.255  mask:255.255.255.0

3)指定awk -f '[ :]+'分隔符後,不同字串被分隔的列依次為:

inet

addr

10.0.0.185

bcast:10.0.0.255  mask:255.255.255.0

第一列第二列

第三列第四列

後面忽略不計。

4)整個答案awk部分意思是,通過nr==2取出第二行,然後,通過-f '[-:]+多分隔符正則匹配,然後通過{print $4}列印出第四列 !謝謝楊瑞同學的答案啊, 懶得寫了,所以讓你總結下。嘿嘿,看到後別怪老師啊。

5)掌握了理論要去實踐驗證才是科學嚴謹的學習態度,好,來幾個例子實踐說話吧。

[root@oldboy ~]# echo ---1:----2|awk -f '[-:]+' ''     

[root@oldboy ~]# echo ---1:----2|awk -f '[-:]+' ''     

[root@oldboy ~]# echo ---1:::::2|awk -f '[-:]+' ''    

最後把我的這些年的運維感悟送給大家:

把簡單的技術學到極致就是高手

工作中多用簡單的技術,實現較複雜的架構,這樣不但能減少維護成本,還減少出故障問題的機率,

同時降低修復故障所花費的時間,更避免流失處理的人無人接替維護的尷尬局面發生。

運維工作中:簡單、易用,是使用命令,選擇軟體和解決方案的基本原則,不是越複雜越好。

獲取IP位址

獲取ip位址 方法一 方法二 1.在asp.net 中專用屬性 獲取伺服器電腦名 page.server.manchinename 獲取使用者資訊 page.user 獲取客戶端電腦名 page.request.userhostname 獲取客戶端電腦ip page.request.userhost...

獲取IP位址

最簡單的就是安裝珊瑚蟲!與好友進行qq聊天是通過udp協議進行的,因此你首先要設定好kv2004防火牆,讓其自動監控udp埠,一旦發現有資料從udp埠進入的話,就將它自動記錄下來。在設定kv2004防火牆時,先單擊防火牆介面中的 規則設定 按鈕,然後單擊 新建規則 按鈕,彈出設定視窗 在該視窗的 名...

獲取IP位址

1 獲取本機器的ip位址和埠號 public static void main string args public static inetaddress getinetaddress catch unknownhostexception e return null public static st...