ITPub博客

首页 > 应用开发 > IT综合 > Learning AWK by examples (1)

Learning AWK by examples (1)

原创 IT综合 作者:zhyuh 时间:2004-10-22 16:30:35 0 删除 编辑

前一阵子突然某天无聊,翻出o'reilly的那本《sed & awk》,突然觉得以前没看过一样,以前做的笔记也看起来那么肤浅。于是这几天有空又在捉摸那本书。

不过这几天又在培训Oracle APP了,不知道这本书能不能看完。

里面的例子真是不错,就抄一些下来吧,加一些注释,日后也可以做个参考。

各位如果有兴趣一起学习,那请放心,粘贴的脚本都经过测试,不会有错。

[@more@]

该例子显示当前目录下的所有文件,目录和目录的子目录,并统计文件数和字节数。

要点:

1. NF等系统变量

2. Regular Expression(正则表达式)的模式匹配

$ cat lssum.awk

ls -lR|awk '
BEGIN{print "BYTES" " " "FILE"
}

#判断:有9列,而且以"-"开头,表示一个正常文件
NF==9 && /^-/ {
  sum += $5
  totalnum += 1
  print $5," ",$9
}

#判断:有9列,而且以"d"开头,表示一个目录
NF==9 && /^d/ {
  print "

"," ",$9
}

#针对参数"-R",显示目录下的子目录
$1 ~ /^..*:$/ {
  print "t" $0
}

END {
  print "Total: ",sum," bytes(" totalnum "files)"
}'

### END ###


$1 ~ /^..*:$/解释:

"^."表示以"."开头
":$"表示以":"结尾
".*"表示匹配任何数量的字符
$1 ~ /^..*:$/ 表示第一列匹配以下条件:以"."开头,以":"结尾,中间可以包含任何数量的字符

运行:

$ lssum.awk
BYTES FILE
        .:
15   aa
27   bb
245   lssum.awk

   sub1
        ./sub1:
   sub2
        ./sub1/sub2:
Total:  287  bytes(3files)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/207/viewspace-779624/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    233
  • 访问量
    2012650