awk内置变量的应用
来源:互联网 发布:局域网视频网站源码 编辑:程序博客网 时间:2024/04/26 17:38
现在我们来看一些例子,它们以变量NR开头。将前面计算平均成绩的脚本中的print语句修改为:
$ cat grades
john 85 92 78 94 88
andrea 89 90 75 90 86
jasper 84 88 80 92 84
$ cat grades.awk
#求5个成绩的平均值
{ total = $2 + $3 + $4 + $5 + $6
avg = total / 5
print NR ".", $1 , avg }
john 85 92 78 94 88
andrea 89 90 75 90 86
jasper 84 88 80 92 84
$ cat grades.awk
#求5个成绩的平均值
{ total = $2 + $3 + $4 + $5 + $6
avg = total / 5
print NR ".", $1 , avg }
运行修改过的脚本输出如下结果:
$ awk -f grades.awk grades
1. john 87.4
2. andrea 86
3. jasper 85.6
1. john 87.4
2. andrea 86
3. jasper 85.6
当读入最后一行后, NR的值是读入的输入记录的个数。它可用于END过程中来产生总结报告。下面是phonelist.awk脚本修改过的版本。
$ cat names
John Robinson, Koren Inc.,978 4th Ave.,Boston,MA 01760,696-0987
Phyllis Chapman, GVE Corp.,34 Sea Drive, Amesbury,MA 01881,879-0900
$ cat phonelist.awk
# phonelist.awk -打印名字和电话号码。
#输入文件一一名字、公司、街道、城市、州和邮编、电话
BEGIN { FS = ", *" } #用逗号分隔字段
{ print $1 ", " $6 }
END { print ""
print NR, "records processed. " }
John Robinson, Koren Inc.,978 4th Ave.,Boston,MA 01760,696-0987
Phyllis Chapman, GVE Corp.,34 Sea Drive, Amesbury,MA 01881,879-0900
$ cat phonelist.awk
# phonelist.awk -打印名字和电话号码。
#输入文件一一名字、公司、街道、城市、州和邮编、电话
BEGIN { FS = ", *" } #用逗号分隔字段
{ print $1 ", " $6 }
END { print ""
print NR, "records processed. " }
这个程序修改了默认的字段分隔符,并使用NR打印记录的总数。注意,这个程序使用了一个正则表达式。程序执行的输出结果如下:
$ awk -F, -f phonelist.awk names
John Robinson, 696-0987
Phyllis Chapman, 879-0900
2 records processed.
John Robinson, 696-0987
Phyllis Chapman, 879-0900
2 records processed.
当在print语句中用逗号分隔参数时,将产生输出字段分隔符(OFS)。你或许会对下面的表达式中逗号将起什么作用产生疑问:
print NR ".", $1 , avg
默认情况下,逗号将在输出中产生一个空格(OFS的默认值)。例如,你可以使用BEGIN过程将OFS重定义为制表符。那么前面的print 语句将产生如下输出:
$ awk -f grades.awk grades
1. john 87.4
2. andrea 86
3. jasper 85.6
1. john 87.4
2. andrea 86
3. jasper 85.6
如果输入字段由制表符分隔,并且希望产生相同的输出时,这种方法特别有用。OFS可以重定义为一系列字符,例如逗号后面跟一个空格。
另一个常用的系统变量是NF,它的值被设置为当前记录的字段个数。就像我们将在下一部分看到的那样,可以用NF来测试一个记录的字段个数是否与所期望的相同。也可以用NF来引用每个记录的最后一个字段。使用"$"字段操作符和NF可以实现该引用。如果有6个字段,那么"$NF"与"$6"一样。
参考资料:http://www.linuxawk.com/communication/494.html
0 0
- awk内置变量的应用
- awk 内置变量的使用
- AIX下AWK语言的内置变量
- awk ARGIND内置变量的使用
- awk 几个特殊的内置变量
- awk 内置变量
- awk内置变量
- Shell awk 内置变量
- awk内置变量
- linux awk内置变量
- awk 内置变量
- awk 内置变量
- linux awk 内置变量实例
- linux awk 内置变量实例
- linux awk 内置变量实例
- awk内置变量使用介绍
- Linux-awk及内置变量
- awk内置变量之SUBSEP
- 快速排序和随机快速排序
- NGramProbability API
- 2013年去哪网校招题目
- RHEL 6.3安装(超级详细图解教程)
- caj格式如何转成pdf格式
- awk内置变量的应用
- UnigramProbability API
- java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
- 在内核里写i2c client 驱动的两种方式
- javascrpt监听窗口关闭
- 迷宫的最短路径 代码(C++)
- swift down cast
- HDU 2222 Keywords Search AC自动机模板
- Kafka 之 中级