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

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

files_to_search.out terms_to_search.out 

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

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

  • Являются ли файлы устройств реализованы драйверами устройств или ядрами ОС?
  • Переименование пучки файлов с датой, измененной меткой времени в конце имени файла?
  • Поиск каталогов без музыкальных файлов
  • Что такое sources.list?
  • Что такого особенного в отношении разрешения Linux 004?
  • Добавить отсутствующее содержимое одного файла в другой
  • диалоговое меню для отображения файлов, выберите один из них, а затем удалите его
  • Backticks не работают при инкапсулировании пути в кавычки
  • 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 
    Linux и Unix - лучшая ОС в мире.