awk 编程:NR 与 FNR、ARGC 与 ARGV 及数组操作详解
1. NR 与 FNR 的改变
在 awk 中,每次读取一条记录时,NR 和 FNR 会递增,而不是被设置为已读取记录的绝对数量。这意味着程序可以改变这些变量的值,并且每次读取记录时,它们的新值会继续递增。例如:
$ echo '1
> 2
> 3
> 4' | awk 'NR == 2 { NR = 17 }
> { print NR }'
输出结果为:
1
17
18
19
在 FNR 被添加到 awk 语言之前,许多 awk 程序利用这一特性,通过在 FILENAME 改变时将 NR 重置为零来跟踪文件中的记录数量。
2. 使用 ARGC 和 ARGV
内置变量 ARGC 和 ARGV 用于传达命令行参数信息。以下是一个展示 ARGC 和 ARGV 信息的程序示例:
$ awk 'BEGIN {
> for (i = 0; i < ARGC; i++)
> print ARGV[i]
> }' inventory-shipped mail-list
输出结果为:
awk
超级会员免费看
订阅专栏 解锁全文
4

被折叠的 条评论
为什么被折叠?



