码迷,mamicode.com
首页 > 其他好文 > 详细

awk脚本

时间:2014-09-25 03:06:08      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:使用   ar   文件   on   c   amp   ad   r   as   

$0,意即所有域。

有两种方式保存shell提示符下awk脚本的输出。最简单的方式是使用输出重定向符号>文件名,下面的例子重定向输出到文件wow。
#awk ‘{print $0}‘ grade.txt > wow

第二种方法是使用tee命令,在输出到文件的同时输出到屏幕。
#awk ‘{print $0}‘ grade.txt | tee delete_me_and_die

打印field-1和field-4,
#awk ‘{print $1,$4}‘ grade.txt

打印信息头放置在BEGIN模式部分
#awk ‘BEGIN {print "Name        Belt\n----------------------"}{print $1"\t"$4}‘ grade.txt
END语句在所有文本处理动作执行完之后才被执行。
#awk ‘BEGIN {print "Name        Belt\n----------------------"}{print $1"\t"$4} END{"end-of-report"}‘ grade.txt

为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式

如果只要打印brown腰带级别可知其所在域为field-4
可以写出表达式{if($4~/brown/) print $0}意即如果field-4包含brown,打印它。

匹配记录找到时,如果不特别声明,awk缺省打印整条记录。

if语句简写
#awk ‘$0 ~ /Brown/‘ grade.txt

匹配包含48的记录
#awk ‘$3~/48/ {print $0}‘ grade.txt

只匹配等于48,
#awk ‘$3=="48" {print $0}‘ grade.txt

不匹配符号是!~

小于
awk ‘{if($6 < $7) print $1}‘ grade.txt

设置大小写可使用[]符号
查询文件中级别为green的所有记录,不论其大小写,
awk ‘/[Gg]reen/‘ grade.txt

第一域的第四个字符是a,使用句点.
#awk ‘$1 ~ /^...a/‘ grade.txt

或关系匹配
#awk ‘$0 ~ /(Yellow|Brown)/‘ grade.txt

复合表达式即为模式间通过使用下述各表达式互相结合起来的表达式:
&& AND : 语句两边必须同时匹配为真。
|| OR:语句两边同时或其中一边匹配为真。
! 非求逆
#awk ‘{if($1=="P.bunny" && $4=="Yellow") print $0}‘ grade.txt
#awk ‘{if($1=="P.bunny" || $4=="Yellow") print $0}‘ grade.txt

awk内置变量
ARGC    命令行参数个数
ARGV    命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME        awk浏览的文件名
FNR     浏览文件的记录数
FS      设置输入域分隔符,等价于命令行-F选项
NF      浏览记录的域个数
NR      已读的记录数
OFS     输出域分隔
ORS     输出记录分隔符
RS      控制记录分隔符

快速查看记录个数,应使用NR
#awk ‘END {print NR}‘ grade.txt

使用NF变量显示每一条读记录中有多少个域,并在END部分打印输入文件名。
#awk ‘{print NF,NR,$0} END{print FILENAME}‘ grade.txt

检查文件中是否有记录。下面的例子只有在文件中至少有一个记录时才查询Brown级别记录。使用AND复合语句实现这一功能。
$awk ‘{if(NR>0 && $4~/Brown/) print $0}‘ grade.txt

NF的一个强大功能是将变量$PWD的返回值传入awk并显示其目录。这里需要指定域分隔符/。
#pwd
/usr/local/etc
#echo $PWD | awk -F/ ‘{print $NF}‘
etc

另一个例子是显示文件名
$echo "/usr/local/etc/rc.sybase" | awk -F/ ‘{print $NF}‘
rs.sybase

awk脚本

标签:使用   ar   文件   on   c   amp   ad   r   as   

原文地址:http://www.cnblogs.com/dream-bccb/p/3991875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!