Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
如何在awk中迭代两个不同数组中的项?_Awk - Fatal编程技术网

如何在awk中迭代两个不同数组中的项?

如何在awk中迭代两个不同数组中的项?,awk,Awk,我想做一些类似的事情: for (x in {a,b}) { ... } 在awk中是否有这样做的方法?两个选项: (一) (二) 如果您想要一些东西,可以在for循环中简洁地使用: $ cat tst.awk function indices(a,b,u, x,c) { for (x in a) { u[++c] = x } for (x in b) { if (!(x in a)) { u[++c] = x }

我想做一些类似的事情:

for (x in {a,b}) {
  ...
}
在awk中是否有这样做的方法?

两个选项:

(一)

(二)

如果您想要一些东西,可以在for循环中简洁地使用:

$ cat tst.awk
function indices(a,b,u, x,c)
{
   for (x in a) {
      u[++c] = x
   }

   for (x in b) {
      if (!(x in a)) {
         u[++c] = x
      }
   }

   return c
}

BEGIN {
   a[3]="foo"
   a[9]=3

   b[5]=7
   b[15]=45

   for (i=1; i<=indices(a,b,u); i++) {
      print u[i]
   }
}
$ awk -f tst.awk
9
3
5
15
$cat tst.awk
函数索引(a、b、u、x、c)
{
对于(a中的x){
u[++c]=x
}
对于(b中的x){
如果(!(a中的x)){
u[++c]=x
}
}
返回c
}
开始{
a[3]=“foo”
a[9]=3
b[5]=7
b[15]=45
对于(i=1;i两个选项:

(一)

(二)

如果您想要一些东西,可以在for循环中简洁地使用:

$ cat tst.awk
function indices(a,b,u, x,c)
{
   for (x in a) {
      u[++c] = x
   }

   for (x in b) {
      if (!(x in a)) {
         u[++c] = x
      }
   }

   return c
}

BEGIN {
   a[3]="foo"
   a[9]=3

   b[5]=7
   b[15]=45

   for (i=1; i<=indices(a,b,u); i++) {
      print u[i]
   }
}
$ awk -f tst.awk
9
3
5
15
$cat tst.awk
函数索引(a、b、u、x、c)
{
对于(a中的x){
u[++c]=x
}
对于(b中的x){
如果(!(a中的x)){
u[++c]=x
}
}
返回c
}
开始{
a[3]=“foo”
a[9]=3
b[5]=7
b[15]=45

对于(i=1;我的问题()试图解决同样的问题。请看一看。它们是连续的数字索引还是稀疏的或关联的?@vk239:你链接到的问题的海报想要进行间接寻址。这不是allen想要的。
for(x in a){};for(x in b){
长度不相等。有些元素相同,有些不同。这里的目标是迭代联合元素。这个问题()试图解决同样的问题。请看一看。它们是连续的数字索引还是稀疏的或关联的?@vk239:你链接到的问题的海报想要进行间接寻址。这不是allen想要的。
for(x in a){};for(x in b){
长度不相等。有些元素相同,有些不同。这里的目标是迭代联合元素。我认为#2最接近我要寻找的,尽管我很惊讶没有一个更简单/语法的答案。AWK倾向于简单,这意味着极简主义。它为难以理解的东西提供语法和函数否则,不提供易于实现的内置功能。在这种情况下,使用现有的构造(而不是普通的应用程序)是很简单的因此,用专门用于这项工作的结构来混乱语言是没有意义的。我认为#2最接近我想要的,尽管我很惊讶没有一个更简单的/语法上的答案。AWK倾向于简单,这意味着极简主义。它提供语法和函数,用于其他方面很难做到的事情,但不支持为易于实现的事情提供内置功能。在这种情况下,使用现有的构造(而不是普通的应用程序)是很简单的,因此使用专门用于此工作的构造来混乱语言是没有意义的。
$ cat tst.awk
function indices(a,b,u, x,c)
{
   for (x in a) {
      u[++c] = x
   }

   for (x in b) {
      if (!(x in a)) {
         u[++c] = x
      }
   }

   return c
}

BEGIN {
   a[3]="foo"
   a[9]=3

   b[5]=7
   b[15]=45

   for (i=1; i<=indices(a,b,u); i++) {
      print u[i]
   }
}
$ awk -f tst.awk
9
3
5
15