我們在學習Unix awk的時候,已經講解過Unix awk的許多的知識。當然讀者要真正地掌握Unix awk,僅僅讀了本文是不夠的,還必須有上機實習這一步。值得提醒大家的是,Unix awk有很多版本,並且各個版本之間存在著一些差別,因此,在使用awk以前最好參考一下你使用的系統的聯機幫助。
1.讀取下一條記錄:
Unix awk的next語句導致Unix awk讀取下一個記錄並完成模式匹配,然後立即執行相應的操作。通常它用匹配的模式執行操作中的代碼。next導致這個記錄的任何額外匹配模式被忽略。
2.簡單地讀取一條記錄
Unix awk的 getline語句用於簡單地讀取一條記錄。如果用戶有一個數據記錄類似兩個物理記錄,那麼getline將尤其有用。它完成一般字段的分離(設置字段變量$0 FNR NF NR)。如果成功則返回1,失敗則返回0(到達文件尾)。如果需簡單地讀取一個文件,則可以編寫以下代碼:
例:示例getline的使用
- {while(getline==1)
- {
- #process the inputted fields
- }
- }
Unix awk也可以使getline保存輸入數據在一個字段中,而不是通過使用getline variable的形式處理一般字段。當使用這種方式時,NF被置成0,FNR和NR被增值。
用戶也可以使用Unix awk的 getline<"filename"方式從一個給定的文件中輸入數據,而不是從命令行所列內容輸入數據。此時,getline將完成一般字段分離(設置字段變量$0和NF)。如果文件不存在,返回-1,成功,返回1,返回0表示失敗。
用戶可以從給定文件中讀取數據到一個變量中,也可以用stdin(標准輸入設備)或一個包含這個文件名的變量代替filename。值得注意的是當使用這種方式時不修改FNR和NR。Unix awk高級輸入的知識,就講解到這裡。