歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

AIX下的AWK語言介紹

awk語言的最基本功能:在文本或字符串中給予指定規則浏覽和抽取信息。 
awk抽取信息後,才能進行其他文本操作,完整的awk腳本通常用來格式化文本中的信息。 
 
三種調用awk的命令方式: 
1.命令行方式:awk [-F field-separator] 'commands' input-file(s) 
    -F選項可選:awk -F: 'commands' input-file 
2.將所有的awk命令插入一個文件,並是awk程序可執行,然後用awk命令解釋器作為腳本的首行, 
    以便通過鍵入腳本名稱來調用它。 
3.將所有的awk命令插入一個單獨文件,然後調用: 
    awk -f awk-script-file input-files(s) 
    -f:指明在文件awk-script-file中的awk腳本 
    input-file(s):使用awk進行浏覽的文件名。 
 
awk腳本 
在命令中調用awk時,awk腳本由各種操作和模式組成。 
-F,awk每次讀一條記錄或一行,並使用指定的分隔符分分隔指定域; 
所沒分隔符,則使用空格。 
 
任何awk語句都由模式和動作組成 
模式,決定動作語句何時觸發及觸發事件,若忽略模式部分,動作將時刻保持執行狀態。 
模式,可是任何條件語句,或符合語句,或正則表達式。 
BEGIN:設置計數,打印頭,在任何文本浏覽動作之前; 
END:用來在awk完成文件浏覽動作後打印輸出文件總數和結尾狀態標志。 
 
動作,在{}內指定;大多用來打印;裡面可包含:if,looping,循環推出結構; 
若不指明采取動作,awk將打印所有浏覽出來的記錄。 
 
例子: 
cat > grade.txt 
M.Tansley  05/99  48311  Green    8    40  44 
J.Lulu    06/99  48317  green    9    24  26 
P.Bunny    02/99  48    Yello    12  35  28 
J.Troll    07/99  4842  Brown-3  12  26  26 
L.Tansley  05/99  4712  Brown-2  12  30  28 
 
將awk輸出的數據保存起來: 
1.awk '{print $0}' grade.txt > wow 
  pg wow 
  stuname    indate seqno  level    age  gnow gmax 
  M.Tansley  05/99  48311  Green    8    40  44 
  J.Lulu    06/99  48317  green    9    24  26 
  P.Bunny    02/99  48    Yello    12  35  28 
  J.Troll    07/99  4842  Brown-3  12  26  26 
  L.Tansley  05/99  4712  Brown-2  12  30  28 
2.使用tee命令,保存並且輸出保存的數據到屏幕 
  [開發]/usr/b4nx/ytcclb>awk '{print $0}' grade.txt | tee delete_me_and_die 
  stuname    indate seqno  level    age  gnow gmax 
  M.Tansley  05/99  48311  Green    8    40  44 
  J.Lulu    06/99  48317  green    9    24  26 
  P.Bunny    02/99  48    Yello    12  35  28 
  J.Troll    07/99  4842  Brown-3  12  26  26 
  L.Tansley  05/99  4712  Brown-2  12  30  28 
  [開發]/usr/b4nx/ytcclb>pg delete_me_and_die 
  stuname    indate seqno  level    age  gnow gmax 
  M.Tansley  05/99  48311  Green    8    40  44 
  J.Lulu    06/99  48317  green    9    24  26 
  P.Bunny    02/99  48    Yello    12  35  28 
  J.Troll    07/99  4842  Brown-3  12  26  26 
  L.Tansley  05/99  4712  Brown-2  12  30  28 
 
打印所有數據 
awk '{print $0}' grade.txt 
  M.Tansley  05/99  48311  Green    8    40  44 
  J.Lulu    06/99  48317  green    9    24  26 
  P.Bunny    02/99  48    Yello    12  35  28 
  J.Troll    07/99  4842  Brown-3  12  26  26 
  L.Tansley  05/99  4712  Brown-2  12  30  28 
Copyright © Linux教程網 All Rights Reserved