AWK Сравнить два файла

Выбор между линейными и чередующимися томами не влияет на емкость; это влияет на то, как данные физически размещаются на томах.

Представьте себе две колоды карт.

Имея линейный том из двух дисков, вы можете думать об общем объеме как о добавлении второй деки к концу первой. Поэтому, когда вы их раздаете, вы раздаете всю первую колоду, а затем вторую колоду.

С полосатым томом из двух дисков вы можете думать об этом как о двух колодах карт, где используется карта из колоды 1, затем карта из колоды 2, затем вторая карта из колоды 1, затем вторая карта из колоды 2....

В обоих случаях у вас есть 2 колоды карт и одинаковое количество карт для раздачи, но то, как вы их раздаете, меняется.

Существуют последствия для производительности, (с чередованием данные могут быть отправлены на два разных диска и с них, поэтому это может быть быстрее ), но на самом деле это очень быстро усложняется во всем, кроме самых простых случаев использования.

0
14.10.2020, 08:16
2 ответа

Если файл file1.txtпринимается как coba.txt, а file2.txtкак cobafull.txt, то:

awk 'NR == FNR {A[$1]=$0; next}; {print A[$0]}' coba{full,}.txt

выход:

budi Sep 2 17:13
andi Sep 15 17:12

Если порядок вывода не важен:

awk 'A[$1]++' coba{,full}.txt

выход:

andi Sep 15 17:12
budi Sep 2 17:13
2
18.03.2021, 22:57

Предполагая, что под file1.txtи file2.txtвы имели в виду coba.txtи cobafull.txtсоответственно, и что последний является «более широким» файлом, тогда, когда вы делаете это:

awk 'FNR==NR{a[$1];next};$NF in a' cobafull.txt coba.txt > result.txt

то, что происходит, вы сначала читаете «полный» файл. При чтении в первой строке awkвидит эту запись:

sinta Sep 29 17:12

Затем он устанавливает a["sinta"]равным "siinta"и прекращает обработку записи. Затем, соответственно, считывается остальная часть файла.

Затем начинается чтение второго файла. Он читает первую строку и видит эту запись:

sinta

, а затем проверяет, существует ли индекс "sinta"в массиве a. Это так, и поэтому он печатает запись, которая на данный момент просто:

sinta

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

-1
18.03.2021, 22:57

Теги

Похожие вопросы