становится фатальным: попытка использовать скалярное значение как ошибку массива при создании соединения между двумя файлами - PullRequest
0 голосов
/ 14 июня 2019

Я создаю полное внешнее объединение между двумя файлами, и для этого я использую 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].Это может сделать это.Но когда я ставлю две петли для там, чтобы напечатать полное внешнее соединение двух.Я получаю этот массив, используя скалярное значение в качестве массива!Что я здесь не так делаю?Полная ошибка, которую я получаю:

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

1 Ответ

2 голосов
/ 14 июня 2019

Не полностью уверен в вашем требовании, попытался исправить ваш код.Не могли бы вы попробовать следующее.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...