手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

awk man手册

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

$1 !~ /[A-Za-z0-9]/{printf("line %d,non alpha and numeric user id:%d: %s\n,NR,$0)}\

$2 == "*" {printf("line %d, no password: %s\n",NR,$0)}'



cat把结果输出给awk,awk把域之间的分隔符设为冒号。


假如域的数量(NF)不等于7,就执行下面的程式。


printf打印字符串"line ?? does not have 7 fields",并显示该条记录。


假如第一个域没有包含任何字母和数字,printf打印“no alpha and numeric user id" ,并显示记录数和记录。


假如第二个域是个星号,就打印字符串“no passwd”,紧跟着显示记录数和记录本身。
13. 几个实例
  • $ awk '/^(no|so)/' test-----打印任何以模式no或so开头的行。
  • $ awk '/^[ns]/{print $1}' test-----假如记录以n或s开头,就打印这个记录。
  • $ awk '$1 ~/[0-9][0-9]$/(print $1}' test-----假如第一个域以两个数字结束就打印这个记录。
  • $ awk '$1 == 100 || $2
  • $ awk '$1 != 10' test-----假如第一个域不等于10就打印该行。
  • $ awk '/test/{print $1 10}' test-----假如记录包含正则表达式test,则第一个域加10并打印出来。
  • $ awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' test-----假如第一个域大于5则打印问号后面的表达式值,否则打印冒号后面的表达式值。
  • $ awk '/^root/,/^mysql/' test----打印以正则表达式root开头的记录到以正则表达式mysql开头的记录范围内的任何记录。假如找到一个新的正则表达式root开头的记录,则继续打印直到下一个以正则表达式mysql开头的记录为止,或到文档末尾。
    14. awk编程
    14.1. 变量
  • 在awk中,变量无需定义就能够直接使用,变量类型能够是数字或字符串。
  • 赋值格式:Variable = expression,如$ awk '$1 ~/test/{count = $2 $3; print count}' test,上式的作用是,awk先扫描第一个域,一旦test匹配,就把第二个域的值加上第三个域的值,并把结果赋值给变量count,最后打印出来。

    文章整理:西部数码--专业提供域名注册虚拟主机服务
    http://www.west263.com
    以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!