AWK 3.1.7-一个系统中的多个回路
我尝试使用以下代码对2个数组进行排序:AWK 3.1.7-一个系统中的多个回路,awk,gawk,Awk,Gawk,我尝试使用以下代码对2个数组进行排序: n = asorti (pacben,pacsor) m = asorti (pacben2,pacsor2) 我需要把它们分类,最好是一起。我知道我可以通过以下方式分别完成: n = asorti (pacben,pacsor) for (p = 1;p <= n; p++) { blah } m = asorti (pacben2,pacsor2) for (p2 =1;p2 <= m; p2++) { blah } n =
n = asorti (pacben,pacsor)
m = asorti (pacben2,pacsor2)
我需要把它们分类,最好是一起。我知道我可以通过以下方式分别完成:
n = asorti (pacben,pacsor)
for (p = 1;p <= n; p++) {
blah
}
m = asorti (pacben2,pacsor2)
for (p2 =1;p2 <= m; p2++) {
blah
}
n = asorti (pacben,pacsor)
m = asorti (pacben2,pacsor2)
for (p = 1;p <= n;p++ && p2 = 1;p2 <= m;p2++) {
blah
}
n=asorti(pacben,pacsor)
对于C中的(p=1;p),您需要修改:
for (p = 1;p <= n;p++ && p2 = 1;p2 <= m;p2++) {
GNUawk
:
$ awk -v n=2 -v m=3 'BEGIN { for (p = 1, p2 = 1; p <= n && p2 <= m; p1++, p2++) print p1, p2}'
awk: syntax error at source line 1
context is
BEGIN { for (p = >>> 1, <<<
awk: illegal statement at source line 1
awk: illegal statement at source line 1
$
$ awk -v n=2 -v m=3 'BEGIN { for (p = 1, p2 = 1; p <= n && p2 <= m; p1++, p2++) print p1, p2}'
awk: cmd. line:1: BEGIN { for (p = 1, p2 = 1; p <= n && p2 <= m; p1++, p2++) print p1, p2}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: BEGIN { for (p = 1, p2 = 1; p <= n && p2 <= m; p1++, p2++) print p1, p2}
awk: cmd. line:1: ^ syntax error
$
这利用了以下事实:p1
和p2
被初始化为相同的值,并且p1
和p2
在循环的增量部分都不是零。在C中,您需要修改:
for (p = 1;p <= n;p++ && p2 = 1;p2 <= m;p2++) {
GNUawk
:
$ awk -v n=2 -v m=3 'BEGIN { for (p = 1, p2 = 1; p <= n && p2 <= m; p1++, p2++) print p1, p2}'
awk: syntax error at source line 1
context is
BEGIN { for (p = >>> 1, <<<
awk: illegal statement at source line 1
awk: illegal statement at source line 1
$
$ awk -v n=2 -v m=3 'BEGIN { for (p = 1, p2 = 1; p <= n && p2 <= m; p1++, p2++) print p1, p2}'
awk: cmd. line:1: BEGIN { for (p = 1, p2 = 1; p <= n && p2 <= m; p1++, p2++) print p1, p2}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: BEGIN { for (p = 1, p2 = 1; p <= n && p2 <= m; p1++, p2++) print p1, p2}
awk: cmd. line:1: ^ syntax error
$
这利用了这样一个事实,即p1
和p2
被初始化为相同的值,并且p1
和p2
在循环的增量部分都是非零的。保持简单。有各种可能的解决方案,这取决于您真正想要的是什么,以及blah
可能做什么,但基于在您接受时,这必须是您想要的:
n = asorti (pacben,pacsor)
m = asorti (pacben2,pacsor2)
for (p = 1;p <= n && p <=m; p++) {
blah
}
n=asorti(pacben,pacsor)
m=asorti(pacben2,pacsor2)
对于(p=1;p保持简单。有各种可能的解决方案,取决于您真正想要的是什么,以及blah
可能做什么,但基于您的接受,这一定是您想要的:
n = asorti (pacben,pacsor)
m = asorti (pacben2,pacsor2)
for (p = 1;p <= n && p <=m; p++) {
blah
}
n=asorti(pacben,pacsor)
m=asorti(pacben2,pacsor2)
for(p=1;p不确定我是否理解了这个问题。对asorti的调用足以进行排序。循环用于显示或使用内容。如果要同时遍历这两个数组,则只能使用一个索引(p2)注意一个索引可能比另一个索引小。@callmeSteve那么如何编写for
循环?我是否必须对这两个asorti
使用相同的veriable?例如n=asorti(pacben,pacsor)n=asorti(pacben2,pacsor2)for(p=1;p我不确定我是否理解了这个问题。对asorti的调用足以进行排序。循环用于显示或使用内容。如果要同时遍历这两个数组,则只能使用一个索引(p2)注意一个索引可能比另一个索引小。@callmeSteve那么如何编写for
循环?我是否必须对这两个asorti
使用相同的veriable?例如n=asorti(pacben,pacsor)n=asorti(pacben2,pacsor2)for(p=1;pAwesome Thank,它像一个符咒一样工作。我从来没有想过你可以在for
语句中这样做。等等-你永远不会真正编写最后一个循环,因为它相当于更简单的for(p=1;p是的,@EdMorton;将不需要编写两个循环控制车。我假设在实际循环的主体中有某种东西在处理(增量或减量,以便随时调整)循环分别进行索引。我怀疑OP只是认为他需要2个循环控制变量,因为他有2个数组。非常感谢,这很有魅力。我从没想过你可以在for
语句中做到这一点。等等-你永远不会真正编写最后一个循环,因为它相当于更简单的for(p=1;p是的,@EdMorton;将不需要编写两个循环控制车。我假设在实际循环的主体中有某种东西在处理(增量或减量,以便随时调整)循环分别索引。我怀疑OP只是认为他需要2个循环控制变量,因为他有2个数组。啊,很高兴知道。啊,很高兴知道。