歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix資訊 >> Unix awk的 getline語句及其它知識講解

Unix awk的 getline語句及其它知識講解

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

通過以前我們講解的知識,我們知道Unix awk的 getline語句用於簡單地讀取一條記錄。如果用戶有一個數據記錄類似兩個物理記錄,那麼getline將尤其有用。它完成一般字段的分離(設置字段變量$0 FNR NF NR)。如果成功則返回1,失敗則返回0(到達文件尾)。如果需簡單地讀取一個文件,則可以編寫以下代碼:

例:示例getline的使用

  1. {while(getline==1)
  2. {
  3. #process the inputted fields
  4. }
  5. }

Unix awk也可以使getline保存輸入數據在一個字段中,而不是通過使用getline variable的形式處理一般字段。當使用這種方式時,NF被置成0,FNR和NR被增值。

用戶也可以使用Unix awk的 getline<"filename"方式從一個給定的文件中輸入數據,而不是從命令行所列內容輸入數據。此時,getline將完成一般字段分離(設置字段變量$0和NF)。如果文件不存在,返回-1,成功,返回1,返回0表示失敗。

用戶可以從給定文件中讀取數據到一個變量中,也可以用stdin(標准輸入設備)或一個包含這個文件名的變量代替filename。值得注意的是當使用這種方式時不修改FNR和NR。

另一種使用getline語句的方法是從Unix命令接受輸入,例如下面的例子:

例:示例從Unix命令接受輸入

  1. {while("who -u"|getline)
  2. {
  3. #process each line from the who command
  4. }
  5. }

當然,也可以使用如下形式:
"command" | getline variable

關閉文件:

Unix awk中允許在程序中關閉一個輸入或輸出文件,方法是使用Unix awk的close語句。
close("filename")

filename可以是getline打開的文件(也可以是stdin,包含文件名的變量或者getline使用的確切命令)。或一個輸出文件(可以是stdout,包含文件名的變量或使用管道的確切命令)。

輸出到一個文件:

Unix awk中允許用如下方式將結果輸出到一個文件:
printf("hello word! ")>"datafile"

printf("hello word! ")>>"datafile"

輸出到一個命令

Unix awk中允許用如下方式將結果輸出到一個命令:
printf("hello word! ")|"sort-t','"

Copyright © Linux教程網 All Rights Reserved