awk参数处理

awk脚本可以通过ARGC和ARGV获取命令行参数。ARGC记录参数总数,ARGV是一个包含所有参数的数组,其中ARGV[0]始终为'awk'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

awk使用ARGC和ARGV来在命令行中传入一些变量到awk脚本中。其中:

  • ARGC包含传入awk脚本的参数的总数目
  • ARGV为一个包含所有传入awk脚本的参数的数组,该数组下标从0到ARGC-1。
  • 当你传入5个参数,ARGC的值为6
  • ARGV[0]总是"awk"
下面简单的一个例子展示了ARGC和ARGV怎么工作的:
fengxi@ubuntu:~/bash/awk$ cat arguments.awk
BEGIN {
    print "ARGC=", ARGC
    for(i=0;i<ARGC;i++)
        print ARGV[i]
}
fengxi@ubuntu:~/bash/awk$ awk -f arguments.awk arg1 arg2
ARGC= 3
awk
arg1
arg2
在gawk中,当前正在处理的文件是存储在ARGV数组中,该数组可在循环块中被访问。ARGIND是访问ARGV数组的下标去检索当前文件。当你在awk脚本中仅仅处理一个文件时,ARGIND的值为1,并且ARGV[ARGIND]会返回当前正在处理的文件名。
下面这个例子只包含一个块,那就是打印ARGIND的值,以及得到当前文件名从ARGV[ARGIND]
{
    print "ARGIND:", ARGIND
    print "Current file:", ARGV[ARGIND]
}
fengxi@ubuntu:~/bash/awk$ awk -f argind.awk  num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
其中num.txt的内容为:
fengxi@ubuntu:~/bash/awk$ cat num.txt
1
2
3
4
5
如果传入不是一个文件,而是两个文件,则输出结果为:
fengxi@ubuntu:~/bash/awk$ awk -f argind.awk  num.txt num2.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 2
Current file: num2.txt
ARGIND: 2
Current file: num2.txt
num2.txt的内容为:
fengxi@ubuntu:~/bash/awk$ cat num2.txt
1
2






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值