参考回答:
1)作用:
样式扫描和处理语言.
它允许创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
2)用法:
awk [-F field-separator] 'commands' input-file(s)
3)内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME AWK浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
4)实例:
1、找到当前文件夹下所有的文件和子文件夹,并显示文件大小
> ls -l | awk '{print $5 "\t" $9}'
读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域。$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键"。
2、找到当前文件夹下所有的文件和子文件夹,并显示文件大小,并显示排序
> ls -l | awk 'BEGIN {COUNT = -1; print "BEGIN COUNT"}
{COUNT = COUNT + 1; print COUNT"\t"$5"\t"$9}
END {print "END, COUNT = "COUNT}'
先处理BEGIN, 然后进行文本分析,进行第二个{}的操作,分析完进行END操作。
3、找到当前文件夹下所有的子文件夹,并显示排序
> ls -l | awk 'BEGIN {print "BEGIN COUNT"} /4096/{print NR"\t"$5"\t"$9}
END {print "END"}'
* /4096/ 正则匹配式子
* 使用print $NF可以打印出一行中的最后一个字段,使用$(NF-1)则是打印倒数第二个字段,其他以此类推。
发表评论 取消回复