Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays AWK-如何轻松定义自定义的值列表并在其中循环?_Arrays_Loops_For Loop_Awk - Fatal编程技术网

Arrays AWK-如何轻松定义自定义的值列表并在其中循环?

Arrays AWK-如何轻松定义自定义的值列表并在其中循环?,arrays,loops,for-loop,awk,Arrays,Loops,For Loop,Awk,首先,我正在寻找一种更简单的方法,而不是在这里调试问题 我知道,在AWK中,我们可以循环使用如下值: echo "hello world" |awk '{for (t=1; t<=10; t++) print t, $0}' echo "hello world" |awk 'BEGIN{t_values[1]=1; t_values[3]=1, t_values[5]=1, ... t_values[700]=1, t_values[900]=1}

首先,我正在寻找一种更简单的方法,而不是在这里调试问题

我知道,在AWK中,我们可以循环使用如下值:

echo "hello world" |awk '{for (t=1; t<=10; t++) print t, $0}'
echo "hello world" |awk 'BEGIN{t_values[1]=1; t_values[3]=1, t_values[5]=1, ... t_values[700]=1, t_values[900]=1} {for (t in t_values) print t, $0}'

然而,这需要大量的输入,而且容易出错。有没有更简单的方法?例如,定义一个值列表,如t_values=[1,3,5,7,9,…,700,900],然后循环通过它?

您可以传递逗号分隔的值并使用拆分:

awk -v t_values='1,3,5,7,9,700,900' 'BEGIN {
  n = split(t_values, vals, /,/); for (i=1; i<=n; i++) print vals[i]}'
如果要在awk内定义变量,则:


您可以传递逗号分隔的值并使用拆分:

awk -v t_values='1,3,5,7,9,700,900' 'BEGIN {
  n = split(t_values, vals, /,/); for (i=1; i<=n; i++) print vals[i]}'
如果要在awk内定义变量,则:

awk 'BEGIN{t_values="1,3,5,7,9,700,900";
n = split(t_values, vals, /,/); for (i=1; i<=n; i++) print vals[i]}'