国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

awk基礎知識小結第1/2頁

2019-10-26 18:36:17
字體:
來源:轉載
供稿:網友

1、使用規則

awk 適合于文本處理和報表生成,它還有許多精心設計的特性,允許進行需要特殊技巧程序設計。
awk 的語法較為常見。它借鑒了某些語言的一些精華部分,如C 語言、python 和 bash。

第一個 awk
讓我們繼續,開始使用 awk,以了解其工作原理。在命令行中輸入以下命令:
$ awk '{ print }' /etc/passwd
您將會見到 /etc/passwd 文件的內容出現在眼前。現在,解釋 awk 做了些什么。調用 awk 時,我們指定 /etc/passwd 作為輸入文件。執行 awk 時,它依次對 /etc/passwd 中的每一行執行 print 命令。所有輸出都發送到 stdout,所得到的結果與與執行catting /etc/passwd完全相同。

現在,解釋 { print } 代碼塊。在 awk 中,花括號用于將幾塊代碼組合到一起,這一點類似于 C 語言。在代碼塊中只有一條 print 命令。在 awk 中,如果只出現 print 命令,那么將打印當前行的全部內容。

這里是另一個awk 示例,作用與上例完全相同:
$ awk '{ print $0 }' /etc/passwd

在 awk 中,$0 變量表示整個當前行,所以 print 和 print $0 的作用完全一樣。

創建一個 awk 程序,讓它輸出與輸入數據完全無關的數據。
示例1:
$ awk '{ print "" }' /etc/passwd
只要將 "" 字符串傳遞給 print 命令,它就會打印空白行。測試該腳本,將會發現對于/etc/passwd文件中的每一行,awk 都輸出一個空白行。由此可知,awk對輸入文件中的每一行都執行這個腳本。

示例2:
$ awk '{ print "hiya" }' /etc/passwd
運行此腳本將在您的屏幕上寫滿 hiya。

2、處理多個字段
awk 非常善于處理分成多個邏輯字段的文本,還可以引用 awk 腳本中每個獨立的字段。
打印系統上所有用戶帳戶的列表:
$ awk -F":" '{ print $1 }' /etc/passwd
上例中,調用awk時,使用 -F 選項來指定 ":" 作為字段分隔符。awk 處理 print $1 命令時,它會打印出在輸入文件中每一行中出現的第一個字段。
以下是另一示例:
$ awk -F":" '{ print $1 $3 }' /etc/passwd

以下是該腳本輸出的摘錄:
halt7
operator11
root0
shutdown6
sync5
bin1
....etc.

如您所見,awk 打印出 /etc/passwd 文件的第一和第三個字段,它們正好分別是用戶名和用戶標識字段。現在,當腳本運行時,它并不理想--在兩個輸出字段之間沒有空格!如果習慣于使用 bash 或 python 進行編程,那么您會指望 print $1 $3 命令在兩個字段之間插入空格。然而,當兩個字符串在 awk 程序中彼此相鄰時,awk 會連接它們但不在它們之間添加空格。以下命令會在這兩個字段中插入空格:
$ awk -F":" '{ print $1 " " $3 }' /etc/passwd

以這種方式調用 print 時,它將連接 $1、" " 和 $3,創建可讀的輸出。
還可以插入一些文本標簽:
$ awk -F":" '{ print "username: " $1 "ttuid:" $3" }' /etc/passwd

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 封丘县| 隆德县| 石棉县| 绥德县| 凉城县| 巴林右旗| 陇南市| 德化县| 镇远县| 古交市| 民县| 潮安县| 崇文区| 马公市| 曲水县| 莱阳市| 东海县| 偏关县| 余姚市| 汶川县| 南阳市| 弥勒县| 汾西县| 双鸭山市| 东乡| 兴国县| 宝鸡市| 安达市| 马关县| 垫江县| 义乌市| 轮台县| 洞口县| 东阿县| 平谷区| 浦东新区| 台中县| 塔河县| 呼伦贝尔市| 靖边县| 安顺市|