日期:2014-05-16 浏览次数:20623 次
一、awk脚本小程序,计算某一文件夹中文件的大小和。
#!/bin/awk -f #命名:file_tot.awk #功能:计算当前文件夹中文件大小和 #使用方法:ls -l|./file_tot.awk #print a header first BEGIN{ print"this is the size of all files" print"fileName\t\tfilesize" print"----------------------------------" } #let's add the size of file (tot+=$5) {printf "%-24s%s\n",$8,tot} #根据打印的头长度来判断左对齐空格长度 #finished print an end END{ printf "\n" print "the total is : " tot print"------------the end!------------" }
#!/bin/awk -f 表示解析器的声明
该脚本和命令ls ../ -l | awk '(tot+=$5){printf "%-24s%s\n",$8,tot}' 执行效果一样
使用实例如下:
二、当文件中分隔符不是空格时,需要使用指定分隔符的awk脚本:(如/etc/passwd中的分隔符为“:”)
#!/bin/awk -f #命名:passwd.awk #功能:使用FS为awk指定分隔符 #print first BEGIN{ FS=":" #指定分隔符 } #根据分隔符获取指定字段 {printf "%-24s%s\n",$1,$6} #print the end END{ print "end of!" }
使用方法:./passwd.awk /etc/passwd
三、给awk脚本传入参数
#!/bin/awk -f #check on how many fields in the file #to call eg:./fieldcheck.awk MAX=8 FS=":" /etc/passwd BEGIN{print "start check!"} #NF:文件中field域个数,FS:field分隔符,NR已读的记录数 {if(NF!=MAX) print "line" NR "dose not have" MAX "fields"} END{print "check end!"}
使用方法:./fieldcheck.awk MAX=8 FS=":" /etc/passwd
四、awk中的数组使用
#!/bin/awk -f #数组测试 #to use eg:./arraytest.awk /dev/null BEGIN{ record="123#879#567#wef#f4h"; print "数组长度:" split(record,myarray,"#") } END{ #for(i in myarray) {print myarray[i]} #无序输出 for(i=1;i<=length(myarray);i++) print myarray[i] }
使用方法:./arraytest.awk /dev/null
/dev/null:代表空文件设备