【发布时间】:2018-05-23 20:42:30
【问题描述】:
您好,这是我关于数组和 bash 脚本的第二个问题。谢谢!!
我有 2 个数组。一个数组是
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
a[10]
另一个数组是
b[1]
b[2]
b[3]
b[4]
b[5]
b[6]
b[7]
b[8]
b[9]
b[10]
是否可以通过任何方式打印/输出/对齐 2,以便它们根据索引号对齐,以便输出始终是并排的相同索引号:
a[1] b[1]
a[2] b[2]
a[3] b[3]
a[4] b[4]
a[5] b[5]
a[6] b[6]
a[7] b[7]
a[8] b[8]
a[9] b[9]
a[10] b[10]
它们实际上从一开始就以不同的方式排序。所以实际上第一个 A 数组看起来像:
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
a[10]
而第二个,不是原来的排序顺序,是
b[2]
b[4]
b[3]
b[5]
b[7]
b[6]
b[9]
b[1]
b[9]
b[8]
在搞乱排序之后,实际所需的输出是按索引对齐 2 个数组。因此,所需的输出是与它们混淆后的 b,然后我需要根据 INDEX NUMBERS 在它们旁边相应的 a。
b[2] a[2]
b[4] a[4]
b[3] a[3]
b[5] a[5]
b[7] a[7]
b[6] a[6]
b[9] a[9]
b[1] a[1]
b[10] a[10]
b[8] a[8]
这在 bash/awk 中可行吗? 使用简单的多维数组会容易得多。对于这种情况,我对一维关联数组的解决方案一无所知。
如果我有一个多维数组,我只需要始终将两列中的 2 个值放在同一个数组中,但在同一个数组的不同维度中。这样我就可以按第二个维度进行排序,并且仍然可以将第一个维度放在它旁边以供进一步计算。
由于 bash/awk 中缺少多维数组,我只是依靠索引号来保持它们全部对齐,但我不能这样做,因为我不知道如何使用它们的索引打印 2 个彼此相邻的数组排好队。
我该如何解决这个问题?
【问题讨论】:
-
你的意思是数组的排序方式不同?你的意思是迭代顺序是通过其他方式给出的吗?在 awk 中,您可以对数组进行排序并检索索引顺序。也许问实际问题而不是派生问题会有所帮助!?
-
这里的导数 =)
-
bash 和 awk 是完全不同的工具,每个都有自己的语法和语义。您是在询问 bash 数组或 awk 数组还是其他什么? awk 数组是关联的,并且没有与其索引关联的特定顺序,所以当你说
They are actually both sorted out differently from the start时,请理解你的意思。 FWIW GNU awk 具有多维数组,您可以使用in循环(谷歌sorted_in)对索引进行排序,以便输出。
标签: arrays bash multidimensional-array awk