利用操縱array的方式來取得字串變數的內容真的是方便好用的方法,只要知道來源string與所需要sub-string的位置與長度之後,我們都可以輕易地取得內容。但是當字串的長度不固定時,我們得要借助其他工具了。awk是字串處理的箇中翹楚,今天就來示範一下。
利用操縱array的方式來取得字串變數的內容真的是方便好用的方法,只要知道來源string與所需要sub-string的位置與長度之後,我們都可以輕易地取得內容。但是當字串的長度不固定時,我們得要借助其他工具了。awk是字串處理的箇中翹楚,今天就來示範一下。
awk它預設採用空格(不限數量)來切割字串的欄位,所以如果知道要取得的內容是第幾欄位,就可以輕易地透過awk的print指令來處理。
譬如說,使用'ls -l'命令可以看到檔案的諸多資訊,包括讀取權限、擁有者、檔案大小、變動時間等等。我們知道'ls -l'命令的輸出格式是以空白作為欄位的切割,而檔案的大小是在第5欄,所以我們可以利用awk來直接取得檔案的大小。請看這個例子:
# ls -l 的輸出格式
ls -l vmlinuz-2.6.18-238.el5PAE
-rw-r--r-- 1 root root 1884660 Dec 20 2010 vmlinuz-2.6.18-238.el5PAE
# 取得檔案的大小
ls -l vmlinuz-2.6.18-238.el5PAE | awk '{print $5}'
1884660
簡單的說明awk的用法:
awk 命令要用 '{ … }’ 括起來,print指令就是輸出的意思,$5就是要輸出第5個欄位的內容,欄位的分隔預設是空白符號。
[本系列文章]
我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值
我與BASH的每一天 - [2]直取字串變數中的特定欄位值