Arrays 具有多个值的awk多维数组
我正在尝试按照现有的解决方案进行打印Arrays 具有多个值的awk多维数组,arrays,multidimensional-array,awk,Arrays,Multidimensional Array,Awk,我正在尝试按照现有的解决方案进行打印 https://stackoverflow.com/questions/17692771/awk-sort-multidimensional-array/17706399#17706399 awk 'BEGIN { a[1][1] = "UP-H" a[1][2] = "RRR8" a[1][3] = "85554" a[1][4] = "H55"
https://stackoverflow.com/questions/17692771/awk-sort-multidimensional-array/17706399#17706399
awk 'BEGIN {
a[1][1] = "UP-H"
a[1][2] = "RRR8"
a[1][3] = "85554"
a[1][4] = "H55"
a[2][1] = "MM"
a[2][2] = "454"
a[2][3] = "X222"
a[2][4] = "X77a"
for (i=1; i in a; i++)
for (j=1; j in a[i]; j++)
printf "a[%d][%d] = %s\n",i,j,a[i][j]}'
将打印
a[1][1] = UP-H
a[1][2] = RRR8
a[1][3] = 85554
a[1][4] = H55
a[2][1] = MM
a[2][2] = 454
a[2][3] = X222
a[2][4] = X77a
...
a[3][0] = asdf ...
....
但是如何循环该数组,以便将该数组与生成/添加的文本一起漂亮地打印出来,格式如下
TEXT1 UP-H TEXT2 RRR8 TEXT3 85554 TEXT4 H55
TEXT1 MM TEXT2 454 TEXT3 X222 TEXT4 X77a
我不知道如果我让别人说什么是最好的方法。
带有多个值UP-H、rrr885554、H55的数组“a”您可以使用此
awk
脚本:
cat prnt.awk
BEGIN {
a[1][1] = "UP-H"
a[1][2] = "RRR8"
a[1][3] = "85554"
a[1][4] = "H55"
a[2][1] = "MM"
a[2][2] = "454"
a[2][3] = "X222"
a[2][4] = "X77a"
for (i=1; i in a; i++) {
len = length(a[i])
for (j=1; j <= len; j++)
printf "TEXT1%d %s%s", j, a[i][j], (j<len?"\t":"\n")
}
}
你的问题不清楚,但这可能就是你想要的:
$ cat tst.awk
BEGIN {
a[1][1] = "UP-H"
a[1][2] = "RRR8"
a[1][3] = "85554"
a[1][4] = "H55"
a[2][1] = "MM"
a[2][2] = "454"
a[2][3] = "X222"
a[2][4] = "X77a"
OFS = "\t"
split("TEXT1 ANOTHERTXT THREE ASDF",strs)
for (i=1; i in a; i++) {
for (j=1; j in a[i]; j++) {
printf "%s%s %s", (j>1 ? OFS : ""), strs[j], a[i][j]
}
print ""
}
}
你好TEXT1 text2text3text4我的意思是为了说明,是否可以调整TEXT1将保持不变,TEXT2实际上是例如AAA,TEXT2是BBBB等。。或者我需要像EdMorton提到的那样,为每个文本1..4运行多个子系统,在那里放置另一个自定义文本字符串,除了您有这些字符串之外,例如
TEXT1,TEXT2,TEXT3,TEXT4
etc已经在某个数组或变量中了吗?@ya801听起来你需要更新你的问题,以澄清你想要的是什么,并提供更具代表性的示例输出。@anubhavaTEXT1,TEXT2,TEXT3,TEXT4
就是要添加的任何文本,比如TEXT1,另一个text,三,ASDF
事实上,我的意思是,像这样没问题,更新您的问题以澄清您想要的是什么,并提供更具代表性的示例输出。
TEXT11 UP-H TEXT12 RRR8 TEXT13 85554 TEXT14 H55
TEXT11 MM TEXT12 454 TEXT13 X222 TEXT14 X77a
$ cat tst.awk
BEGIN {
a[1][1] = "UP-H"
a[1][2] = "RRR8"
a[1][3] = "85554"
a[1][4] = "H55"
a[2][1] = "MM"
a[2][2] = "454"
a[2][3] = "X222"
a[2][4] = "X77a"
OFS = "\t"
split("TEXT1 ANOTHERTXT THREE ASDF",strs)
for (i=1; i in a; i++) {
for (j=1; j in a[i]; j++) {
printf "%s%s %s", (j>1 ? OFS : ""), strs[j], a[i][j]
}
print ""
}
}
$ awk -f tst.awk
TEXT1 UP-H ANOTHERTXT RRR8 THREE 85554 ASDF H55
TEXT1 MM ANOTHERTXT 454 THREE X222 ASDF X77a