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

时间:2019-06-14 09:40:53

标签: 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 b[i] "\t" a[j] "" }}

我尝试运行不带此部分的代码,仅打印a [1]和b [1]。它能够做到。但是,当我在其中放置两个for循环时,将打印两个的完整外部联接。我使用标量值作为数组来获取此数组os!我在这里做错了什么? 我得到的完整错误是

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

1 个答案:

答案 0 :(得分:2)

不确定您的要求,尝试修复您的代码。您能不能试一下。

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