iT邦幫忙

DAY 3
3

我與BASH shell scripting的每一天系列 第 3

我與BASH的每一天 - [3] 利用awk來擷取特定欄位

  • 分享至 

  • xImage
  •  

利用操縱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]直取字串變數中的特定欄位值


上一篇
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
下一篇
我與BASH的每一天 - [4] 利用awk來擷取特定欄位-2
系列文
我與BASH shell scripting的每一天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言