首页 > 解决方案 > 变得致命:在两个文件之间创建连接时尝试使用标量值作为数组错误

问题描述

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

解决方案


不完全确定您的要求,尝试修复您的代码。请您尝试以下操作。

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

推荐阅读