Если файлы имеют общие строки в одном порядке,
join -t, -j1 file1.txt file2.txt
Для получения дополнительной информации см. man join
. По сути, join
два файла, пропуская «непарные строки». Разделителем является запятая -t,
и соединение в поле 1 -j1
.
/dev/urandom
— это символьное устройство, а не обычный файл. Его открытие предоставляет интерфейс для драйвера, обычно в ядре, который обрабатывает чтение; каждый раз, когда программа читает из /dev/urandom
, выполняется вызов драйвера, и драйвер определяет, как предоставить соответствующий контент (так же, как и любое другое символьное устройство — /dev/null
, /dev/zero
... ).
В Linux это реализовано вdrivers/char/random.c
. Он поддерживает «энтропийный пул», полученный из различных источников случайных данных, и при чтении обрабатывает данные пула с помощью потокового шифра ChaCha для создания возвращаемых данных.
/dev/urandom
не является «обычным файлом» (да, это наименование POSIX ), это устройство. Так же, как и большинство «файлов» в /dev/, так что у вас есть много волшебного поведения.
/dev/null
, где сколько ни пиши, никогда не заполнится /dev/tty
(и коллеги ), где вы взаимодействуете с терминалом /dev/full
, который всегда возвращает «На устройстве не осталось места» при любой попытке записи /dev/zero
, который возвращает бесконечный набор нулевых байтов и многие другие.
Эти файлы на самом деле являются интерфейсом для взаимодействия с модулем ядра. Таким образом, когда вы «читаете» его, на самом деле выполняется функция, которой предлагается прочитать как можно больше байтов вашей программы (head, dd и т. д. )запрошенный(/dev/urandom
— это символ устройство ). Затем эта функция обрабатывает его внутренне (на основе нескольких пулов энтропии ), чтобы заполнить этот буфер (в данном случае, чтобы вы получили псевдослучайное содержимое ).