Как работает AWK, когда в скрипте происходит взаимозаменяемость двух файлов при сравнении

В приведенном ниже скрипте awk , когда имена файлов меняются местами, я мог видеть 2 разных результата. Мне интересно знать, как awk записывает вывод на консоль с разными результатами в каждом случае

Файл 1:

 abc bca cdb abc few bre bbc bba cdb cbc frw bte 

Файл 2:

 abc bca cdb gbc fiw bpe bbc bca cdb cbc frw bte 

Сценарий:

 awk 'FNR==NR {a[$1$2$3]++;next};!(($1$2$3) in a)' **file1 file2** 

Выход :

 gbc fiw bpe bbc bca cdb 

Автор сценария:

 awk 'FNR==NR {a[$1$2$3]++;next};!(($1$2$3) in a)' **file2 file1** 

Выход:

 abc few bre bbc bba cdb 

Первая команда дает вам строки в file2 которые не могут быть найдены в file1 а вторая команда дает вам строки в file1 которые не могут быть найдены в file2 .

Для приведенных данных код эквивалентен

 awk 'FNR==NR { a[$0]++; next } !($0 in a)' 

где a – это массив, в который введены строки из первого файла. Условие в конце говорит: «напечатайте эту строку (из второго файла), если она не найдена в первом файле».