Поиск терминов в наборе файлов

У меня два файла:

files_to_search.out terms_to_search.out 

Я хотел бы создать команду, которая идентифицирует термины в terms_to_search.out , которые не используются ни в одном из файлов в files_to_search.out

Есть простой способ сделать это?

2 Solutions collect form web for “Поиск терминов в наборе файлов”

Это немного сложно, если вы хотите учитывать термины, которые могут перекрываться, например, одна строка, содержащая banana , достаточно, чтобы считать использование как ban и nan .

Вот минимально проверенный, быстрый и грязный perl-скрипт. Он читает строки для поиска (иглы) и имен файлов, а затем строит регулярное выражение, соответствующее любому из игл. Когда он находит совпадение, он удаляет согласованную строку из набора игл и перестраивает регулярное выражение. Иглы, оставшиеся в конце, – это те, которые вам нужны.

 #! /usr/bin/env perl open FILENAMES, "<", "files_to_search.out" or die $!; @filenames = <FILENAMES>; close FILENAMES; chomp foreach @filenames; open NEEDLES, "<", "terms_to_search.out" or die $!; @needles = <NEEDLES>; close NEEDLES; chomp foreach @needles; %needles = map {$_, 1} @needles; sub build_re { $re = qr/(@{[join("|", map quotemeta, keys %needles)]})/; } @ARGV = @filenames; while (<ARGV>) { while (/$re/) { delete $needles{$1}; exit if !%needles; build_re(); } } print map "$_\n", sort keys %needles; 

быстрая уродливая попытка на одном лайнере (с GNU grep для опции -o ):

 grep -of terms_to_search_out $(cat files_to_search.out | tr '\n' ' ') | sort | uniq | grep -vf terms_to_search_out 
  • Модификация и время доступа к файлу?
  • Идентификатор группы 501 не найден.
  • Разделы и диски
  • Как перенести файл в другой каталог, как только он будет создан, в Linux?
  • Может ли ядро ​​знать, когда файл читается?
  • Как предоставить разрешения для чтения, но не удалить файл
  • определять измененные пользователем файлы
  • Можно ли находить файлы, созданные между двумя конкретными временами, игнорируя даты?
  • Лучший способ синхронизации файлов - копировать только СУЩЕСТВУЮЩИЕ файлы и только если NEWER, чем целевой
  • Как скопировать файлы изображений, имена которых не заканчиваются размером их разрешения?
  • Список всех каталогов, которые НЕ имеют файл с заданным именем файла внутри
  • В чем разница между этими двумя наборами команд для настройки разрешений ACL?
  • Interesting Posts

    Как сделать N-образный diff?

    Как обрабатывать Linux RAID0 и Windows с чередованием динамических томов на одном и том же жестком диске?

    Что означает индикатор noeol внизу сеанса редактирования vim?

    как применить этот патч

    Являются ли в основном POSIX-совместимые системы системами POSIX?

    Получено меньше вывода с параметром print0 для поиска?

    Распечатайте количество значений, в которых есть специальные символы

    Почему команда cd обрабатывает STDIN иначе, чем другие команды?

    Строка Keep, содержащая X в первых двух полях

    Как удалить видео после полного просмотра?

    Экономически выгодно спаривать каждую строку файла со всеми остальными

    Выводить только IP-адреса онлайн-машин с nmap

    Как я могу использовать SSH в своем файловом сервере Samba?

    Как изменить размер и дополнение значков на верхней панели Gnome 3 в Linux Mint 12?

    CentOS 7 – переименование сетевого интерфейса без перезагрузки

    Linux и Unix - лучшая ОС в мире.