Awk 致命错误:在两个文件之间创建联接时,尝试将标量值用作数组错误

Awk 致命错误:在两个文件之间创建联接时,尝试将标量值用作数组错误,awk,Awk,我正在两个文件之间创建一个完整的外部连接,为此,我使用awk将两个文件记录存储在单独的数组中,然后稍后使用两个for循环打印它们 awk 'FNR==NR{a[NR]=$0;next}{x=1;b[x]=$0;x=x+1} END{for(i in b[i]){for (j in a[j]) print b[i] "\t" a[j] "" }}' transpose.txt rows.txt 我犯的错误是这一部分 END{for(i in b[i]){for (j in a[j]) print

我正在两个文件之间创建一个完整的外部连接,为此,我使用awk将两个文件记录存储在单独的数组中,然后稍后使用两个for循环打印它们

awk 'FNR==NR{a[NR]=$0;next}{x=1;b[x]=$0;x=x+1} END{for(i in b[i]){for (j in a[j]) print b[i] "\t" a[j] "" }}' transpose.txt rows.txt
我犯的错误是这一部分

END{for(i in b[i]){for (j in a[j]) print b[i] "\t" a[j] "" }}
我试着在没有这个部分的情况下运行代码,只打印a[1]和b[1]。它能够做到这一点。但是当我把两个for循环放在那里打印两个的完全外部连接时。我使用标量值作为数组得到这个数组!我做错了什么? 我得到的全部错误是

awk: cmd. line:1: (FILENAME=rows.txt FNR=176) fatal: attempt to use a scalar value as array

无法完全确定您的需求,尝试修复代码。你能试试下面的吗

awk 'FNR==NR{a[FNR]=$0;next}{b[FNR]=$0} END{for(i in b){for (j in a) print b[i] "\t" a[j] }}' transpose.txt rows.txt

无法完全确定您的需求,尝试修复代码。你能试试下面的吗

awk 'FNR==NR{a[FNR]=$0;next}{b[FNR]=$0} END{for(i in b){for (j in a) print b[i] "\t" a[j] }}' transpose.txt rows.txt

这确实有效。谢谢所以很明显我在b[i]中走错了路。您的固定代码运行良好。@noobCoder,为什么因为
b[i]
表示我们不想要的
b
的值,我们需要它遍历数组而不是数组的值,您也可以选择正确的答案,干杯。这确实有效。谢谢所以很明显我在b[i]中走错了路。你的固定代码运行得很好。@noobCoder,为什么因为
b[i]
表示我们不想要的
b
的值,我们需要它遍历数组而不是数组的值,你也可以选择正确的答案,干杯。