Использование сценария для организации файла - PullRequest
0 голосов
/ 21 июня 2019

Итак, у меня есть два плоских файла в следующем формате:

FILE1.TXT

Customer1 12345 12346 12347
Customer2 14444 14445

file2.txt

12345 aol.com
12347 gmail.com
12346 google.com
14444 yahoo.com
14445 outlook.com

Мне нужно иметь возможность перевести файл примерно так:

Customer1 aol.com google.com gmail.com
Customer2 yahoo.com outlook.com 

Это то, что я имею до сих пор

$ awk 'NR==FNR {a[$1]=$2; next} $2 in a {print $0, a[$2]}' OFS='\t' File2.txt File1.txt

Однако это касается только столбца 2 первого файла, как его развернуть, чтобы просмотреть все столбцы в файле1

Ответы [ 2 ]

1 голос
/ 21 июня 2019

awk может проходить через поля. Попробуйте что-то вроде этого -

$: awk 'NR==FNR {a[$1]=$2; next;}
        { printf "%s ", $1; 
          for (i=2;i<=NF;i++) {
            printf "%s ", a[$i]; 
          };
          printf "\n";
        }' File2.txt File1.txt
Customer1 aol.com google.com gmail.com
Customer2 yahoo.com outlook.com
0 голосов
/ 21 июня 2019

Вы можете позволить awk просматривать файл, разделять записи NF==2 и NF==3 на две хеш-таблицы / массивы, затем связывать эти два массива и выводить на печать.

Вы также можете дважды просмотреть файл, чтобы выполнить ту же логику.

Я думаю, это хорошее начало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...