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 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/70296358a90778680d40312c68a39750.html