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

awk处理命令行参数

时间:2015-05-10 09:54:09      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:awk处理命令行参数   argc   argv   

ARGV awk可以从内置数组ARGV中得到命令行参数,其中包括命令awk。但所有传递给awk的选项都不在其中。ARGV数组的下标从0开始。
ARGC ARGC是一个包含命令行参数个数的内置变量。

范例

cat argvs
# Scriptname:argvs
BEGIN{
  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 datafile
argv[0] is awk
argv[1] is datafile
The number of arguments, ARGC=2

说明
for循环先将i设为0,然后测试它是否小于命令行参数的个数(ARGC) ,再用printf函数依次显示出每个参数。所有参数处理完之后,最后那条printf 语句用来输出参数的个数ARGC。这个例子说明awk并不把命令行选项视为参数。

范例

$ awk -f argvs datafile "Peter Pan" 12
argv[0] is awk
argv[1] is datafile
argv[2] is Peter Plan
argv[3] is 12
The number of arguments,ARGV=4

说明:和上个例子一样,打印出所有参数。nawk命令被当成第一个参数,而-f选项和脚本文件名(即argvs)则被排除在外。

范例

cat datafile5
Tom Jones:123:03/14/56
Peter Pan:456:06/22/58
Joe Blow:145:12/12/78
Santa Ana:234:02/03/66
Ariel Jones:987:11/12/66

cat arging.sc
# Scriptname:arging.sc
BEGIN{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 Pan
Peter Pan:456:06/22/58
nawk: can‘t open Peter Pan
input record number 5, file Peter Pan
source 1ine number 2

说明:
1.在BEGIN块中,ARGV[2]的值,即Peter Pan,被赋给变量name。
2.Peter Pan被打印出来了,但是,处理完datafile并将其关闭后,awk试图把Peter Pan作为输入文件打开。awk把参数都作为输入文件。

范例

cat arging2.sc
BEGIN{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 Pan
Peter Pan:456:06/22/58

说明:awk把ARGV数组的元素作为输入文件。且awk用完一个参数就将它左移,接着处理下一个,直到ARGV数组变空。如果某个参数使用后立刻被删除,那么这个参数就不会被当作下一个输入文件来处理。

参考资料:http://www.linuxawk.com/jiaocheng/295.html

awk处理命令行参数

标签:awk处理命令行参数   argc   argv   

原文地址:http://blog.csdn.net/xiyangyang052/article/details/45604259

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