My FAQ,最新最全的IT技术FAQ
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 未整理篇 | 技术讨论
  当前位置: > 程序开发 > Shell
AWK How to Compute and Print Certain Fields
作者:未知 时间:2005-09-13 23:27 出处:Blog.ChinaUnix.net 责编:My FAQ
              摘要:AWK How to Compute and Print Certain Fields
列印檔案中指定的欄位資料並加以計算

列印檔案中指定的欄位資料並加以計算

AWK 處理資料時, 它會自動從資料檔中一次讀取一筆記錄, 並會 將該資料切分成一個個的欄位; 程式中可使用 , ,... 直接取得 各個欄位的內容. 這個特色讓使用者易於用 AWK 撰寫 reformatter 來改變資料格式.
  • [ 範例 :] 以檔案 emp.dat 為例, 計算每人應發工資並列印報表.
  • [ 分析 :] AWK 會自行一次讀入一列資料, 故程式中僅需告訴 AWK 如何處理所讀入的資料列.
執行如下命令 : ( $ 表UNIX命令列上的提示符號 ) awk '{ print , * }' emp.dat 執行結果如下 : 螢幕出現 : Jenny 21000 Dan 23650 Max 27170 John 27500 Linda 19950 說 明 :
  1. UNIX命令列上, 執行AWK的語法為: awk 'AWK程式' 欲處理的資料檔檔名. 本範例中的 程式部分 為 {print , * }. 把程式置於命令列時, 程式之前後須以 ' 括住.
  2. emp.dat 為指定給該程式處理的資料檔檔名.
  3. 本程式中使用 : Pattern { Actions } 語法.
    PatternActions
    print , *
    Pattern 部分被省略, 表無任何限制條件. 故AWK讀入每筆資料列 後都將無條件執行這個 Actions.
  4. print為AWK所提供的輸出指令, 會將資料輸出到stdout(螢幕). print 的參數間彼此以 ``{ ,}'' 隔開, 印出資料時彼此間會以空白 隔開. (參考 附錄 D 內建變數OFS)
  5. 將上述的 程式部分 儲存於檔案 pay1.awk 中. 執行命令時再指定AWK程式檔 之檔名. 這是執行AWK的另一種方式, 特別適用於程 式較大的情況, 其語法如下: $awk -f AWK程式檔名 資料檔檔名 故執行下列兩命令,將產生同樣的結果. $awk -f pay1.awk emp.dat $awk ' { print , * } ' emp.dat 讀者可使用``-f''參數,讓AWK主程式使用其它僅含 AWK函數 的 檔案中的函數 其語法如下: awk -f AWK主程式檔名 -f AWK函數檔名 資料檔檔名 (有關 AWK 中函數之宣告與使用於 7.4 中說明)
  6. AWK中也提供與 C 語言中類似用法的 printf() 函數. 使用 該函數可進一步控制資料的輸出格式. 編輯另一個AWK程式如下, 並取名為 pay2.awk { printf("\%6s Work hours: %3d Pay: %5d\", ,$3, * ) } 執行下列命令 $awk -f pay2.awk emp.dat 執行結果螢幕出現: Jenny Work hours: 100 Pay: 21000 Dan Work hours: 110 Pay: 23650 Max Work hours: 130 Pay: 27170 John Work hours: 125 Pay: 27500 Linda Work hours: 95 Pay: 19950

 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有