awk命令簡單學習

2021-09-06 23:48:07 字數 1585 閱讀 3937

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

解答:說明:此題解答方法已經給大家講解了不下15種,還可以有很多,在這裡給大家著重講下awk的技巧用法,希望大家能多重視老師的思路、思維過程,不過過分關注問題的答案,以便達到學一通十的效果。

方法一【此法為綠葉】:如果用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

小結:這個方法很方便吧,同學們可以多用,選取包含ip位址行的特殊關鍵字'inet addr』過濾然後,使用awk以空格和:同時做分隔符,然後取出需要的內容。

本答案的最大缺點就是計算$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 '[-:]+' ''      1

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

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

awk命令簡單例子

使用方法 awk 例子 環境搭建 mkdir test cp etc passwd test test 1 列印 test test.txt 複製的 etc passwd檔案 檔案中第一列的值 f 指定檔案每一行的分隔符,這個分隔符可以是乙個符號 如 也可以是乙個字串或者正規表示式 printf 列...

awk命令學習

題目 檔案a,每行兩列,格式為url ip,檔案b每行一列,格式為url,通過awk實現找出b檔案中的url是否在a檔案中,如存在,將此url和對應的ip輸出 檔案大小不考慮 編寫檔案a如下 編寫檔案b如下 預期輸出結果為 設計awk命令如下 c sharp view plain copy prin...

linux命令學習 awk 命令學習

三 awk 指令碼 四 awk 程式設計 五 寫在結尾 awk是linux上一款強大的文字分析工具,它可以將檔案逐行的讀入,然後用分割符分割開來,再對分割的各個部分進行處理。awk分割的各個部分叫做域,預設的分割符是空格和製表符。可以通過 f來指定分割符。awk有3個不同版本 awk nawk和ga...