歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix資訊 >> Unix awk程序設計命令行使用知識講解

Unix awk程序設計命令行使用知識講解

日期:2017/3/6 11:37:40   编辑:Unix資訊

我們在這裡講解Unix awk程序設計的內容,但在講解之前,我們將用一些例子來對前面的知識進行回顧,這些例子都是在命令行中使用的,由此我們可以知道在命令行中使用Unix awk是多麼的方便。

這樣做的原因一方面是為下面的內容作鋪墊,另一方面是介紹一些解決簡單問題的方法,我們完全沒有必要用復雜的方法來解決簡單的問題----既然Unix awk提供了較為簡單的方法的話。

例:顯示文本文件mydoc匹配(含有)字符串"sun"的所有行。
$awk '/sun/{print}' mydoc

由於顯示整個記錄(全行)是Unix awk的缺省動作,因此可以省略action項。
$awk '/sun/' mydoc

例:下面是一個較為復雜的匹配的示例:
$awk '/[Ss]un/,/[Mm]oon/ {print}' myfile

它將顯示第一個匹配Sun或sun的行與第一個匹配Moon或moon的行之間的行,並顯示到標准輸出上。

例:下面的示例顯示了內置變量和內置函數length()的使用:
$awk 'length($0)>80 {print NR}' myfile

該命令行將顯示文本myfile中所有超過80個字符的行號,在這裡,用$0表示整個記錄(行),同時,內置變量NR不使用標志符'$'。

例:作為一個較為實際的例子,我們假設要對Unix中的用戶進行安全性檢查,方法是考察/etc下的passwd文件,檢查其中的passwd字段(第二字段)是否為"*",如不為"*",則表示該用戶沒有設置密碼,顯示出這些用戶名(第一字段)。我們可以用如下語句實現:
#awk -F: '$2=="" {printf("%s no password! ",$1' /etc/passwd

在Unix awk這個示例中,passwd文件的字段分隔符是“:”,因此,必須用-F:來更改默認的字段分隔符,這個示例中也涉及到了內置函數printf的使用。

Copyright © Linux教程網 All Rights Reserved