awk处理命令行参数

本文发布时间: 2019-Mar-22
ARGV awk可以从内置数组ARGV中得到命令行参数,其中包括命令awk。但所有传递给awk的选项都不在其中。ARGV数组的下标从0开始。ARGC ARGC是一个包含命令行参数个数的内置变量。范例$ cat argvs# Scriptname:argvsBEGIN{ for(i=0; i<ARGC; i++){ printf("argv[%d] is %s\n",i,ARGV[i]) } printf("The number of arguments, ARGC=%d\n",ARGC)}$ awk -f argvs datafileargv[0] is awkargv[1] is datafileThe number of arguments, ARGC=2说明for循环先将i设为0,然后测试它是否小于命令行参数的个数(ARGC) ,再用printf函数依次显示出每个参数。所有参数处理完之后,最后那条printf 语句用来输出参数的个数ARGC。这个例子说明awk并不把命令行选项视为参数。范例$ awk -f argvs datafile "Peter Pan" 12argv[0] is awkargv[1] is datafileargv[2] is Peter Planargv[3] is 12The number of arguments,ARGV=4说明:和上个例子一样,打印出所有参数。nawk命令被当成第一个参数,而-f选项和脚本文件名(即argvs)则被排除在外。范例$ cat datafile5Tom Jones:123:03/14/56Peter Pan:456:06/22/58Joe Blow:145:12/12/78Santa Ana:234:02/03/66Ariel Jones:987:11/12/66$ cat arging.sc# Scriptname:arging.scBEGIN{FS=":";name=ARGV[2] print "ARGV[2] is "ARGV[2]}$1 ~ name {print $0}$ awk -f arging.sc datafile5 "Peter Pan"ARGV[2] is Peter PanPeter Pan:456:06/22/58nawk: can't open Peter Paninput record number 5, file Peter Pansource 1ine number 2说明:1.在BEGIN块中,ARGV[2]的值,即Peter Pan,被赋给变量name。2.Peter Pan被打印出来了,但是,处理完datafile并将其关闭后,awk试图把Peter Pan作为输入文件打开。awk把参数都作为输入文件。范例$ cat arging2.scBEGIN{FS=";";name=ARGV[2] print "ARGV[2] is "ARGV[2] delete ARGV[2]}$1 ~ name {print $0}$ awk -f arging2.sc datafile "Peter Pan"ARGV[2] is Peter PanPeter Pan:456:06/22/58说明:awk把ARGV数组的元素作为输入文件。且awk用完一个参数就将它左移,接着处理下一个,直到ARGV数组变空。如果某个参数使用后立刻被删除,那么这个参数就不会被当作下一个输入文件来处理。参考资料:http://www.linuxawk.com/jiaocheng/295.html


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:09pm
栏目列表