-1

我一直试图从 awk 中的 2 个参数(不是文件)中获取 NF,但没有成功。

这是命令行:

awk -f the_program 12/12/2013 11/11/2014

是否有可能通过管道 ARGV[1] 或 ARGV[2] 到 getline 以获得 NF?我想获得 NF,这样我就可以在对它们进行其他操作之前轻松验证这些参数

4

3 回答 3

2

您可以在纯 awk 中执行此操作:

$ awk -F/ 'BEGIN{for (i=1;i<ARGC;i++) {print split(ARGV[i], a) }}' 12/12/2013 11/11/2014
3
3
于 2013-11-01T10:50:10.353 回答
1

我不确定是否可以单独使用awk. 尝试bash在它周围使用包装脚本。

脚本文件

#!/bin/bash
awk 'BEGIN {
  RS=" "; FS="/";
} 
{
  print NF;
}' <(echo $*)

测试

% myscript.sh 12/12/2013 11/11/2014
3
3

或者按照@fedorqui的建议消除使用echowith<<<

#!/bin/bash
awk 'BEGIN {RS=" ";FS="/";} {print NF}' <<<$*
于 2013-11-01T08:51:09.897 回答
0

这就是你想要的吗?

$ awk 'BEGIN{ print ARGC - 1 }' 12/12/2013 11/11/2014
2

如果没有,请发布一些预期的输出并解释原因。

于 2013-11-01T16:21:47.343 回答