awk 中 ARGIND 变量毫无任何作用,好奇发生了什么会有这种现象?

2016-11-10 18:13:15 +08:00
 Graphene

题主今天看师姐 shell 代码的时候,试着运行了一句命令,代码如下: awk '{if(ARGIND==1) {val[$1]} else{if($1 in val) print $2}}' $file index_fix.dat >${file%.dat}_fix.dat 结果 shell 终端上波澜不惊,仿佛什么都没有发生。 awk '{if(NR==FNR) {val[$1]} else{if($1 in val) print $2}}' $file index_fix.dat >${file%.dat}_fix.dat 正常对比了两个文件$file 和 index_fix.dat ,输出了两个文件都有的行(应该没错吧...)。 但是这两句指令在 awk 里不该是等价的么?为什么上面那个就挂掉了...

2405 次点击
所在节点    程序员
2 条回复
sutra
2016-11-10 18:39:28 +08:00
This variable ARGIND is a gawk extension.
Mdrights
2016-11-11 07:22:04 +08:00
真有用 awk 的啊^_^

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/319629

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX