說到用的最頻繁的bash指令,非'grep'莫屬了。當我需要尋找特定字串時,'grep'指令永遠都派得上場。前面提到了那麼多方法來獲取特定字串的片段,但是在實際的用途中,常常是需要先透過'grep'找出需要的字串,再透過’awk’或'cut'來取得特定片段。
舉例來說,我想要撈出系統中Qlogic FC HBA卡的driver版本,我知道必須先要用’modinfo qla2xxx’去叫出qla2xxx這個module的所有資訊,而我知道版本編號是記錄在'version:'這欄裡,所以我可以透過'grep'的方法取到他。但是如果我想要更精確地取出版本編號這個字串的內容,我就需要借助’awk’的協助了。
#先透過 modinfo qla2xxx 去叫出qla2xxx這個module的所有資訊
# modinfo qla2xxx
filename: /lib/modules/2.6.18-238.el5PAE/kernel/drivers/scsi/qla2xxx/qla2xxx.ko
version: 8.03.01.05.05.06-k
license: GPL
description: QLogic Fibre Channel HBA Driver
...
#再透過 grep version 取找出記錄著版本編號這行 (version: 8.03.01.05.05.06-k)
#接著透過 awk ‘{print $2}’ 踢掉 version 這個字,僅留下真正的版本編號
#因為在version這列裡(version: 8.03.01.05.05.06-k)編號是屬於第二欄,所以就直接印出$2的內容。
modinfo qla2xxx | grep ^version | awk '{ print $2 }'
8.03.01.05.05.06-k
[本系列文章]
我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
我與BASH的每一天 - [3] 利用awk來擷取特定欄位
我與BASH的每一天 - [4] 利用awk來擷取特定欄位-2
我與BASH的每一天 - [5] 利用awk來擷取特定欄位-3
我與BASH的每一天 - [6] 利用cut來擷取特定欄位
modinfo qla2xxx | awk '/^version/ {print $2}'
8.03.01.05.05.06-k