Как указано ravindersingh13 , вы можете выбрать awk
для решения вашей проблемы:
Следующий скрипт awk
делает то же самое:
$ awk 'NR==FNR{a[$0]++;next} a[$0]' one two
chr5 315035 315136 AHRR
Этот подход не требует сортировки файлов, однако он потребляет больше памяти, поскольку строки хранятся в ассоциативном массиве.Большее потребление памяти, но более быстрый результат для больших файлов (поскольку их не нужно сортировать).
Если вы хотите более прямой подход, вы можете использовать либо comm
:
$ comm -1 -2 <(sort one) <(sort two)
chr5 315035 315136 AHRR
инструмент, который сравнивает два отсортированных файла построчно
или grep
с использованием опции -f
(первый файл будет определять список шаблонов, которые grep будет использовать для запроса второго файла)
$ grep -f one two
chr5 315035 315136 AHRR
-f FILE, --file=FILE
Получать шаблоны от FILE
, по одному на строку.Если этот параметр используется несколько раз или в сочетании с параметром -e (--regexp)
, выполните поиск всех указанных шаблонов.Пустой файл содержит ноль шаблонов и поэтому ничего не соответствует.