前一阵子突然某天无聊,翻出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 "
#针对参数"-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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/207/viewspace-779624/ ,如需转载,请注明出处,否则将追究法律责任。