我正在创建两个文件之间的完全外部联接,为此,我使用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
答案 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