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

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

files_to_search.out terms_to_search.out 

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

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

  • Что случилось с файлом, когда я ввел «mv file.txt ../»?
  • Проверьте, существует ли в каталоге несколько файлов
  • brasero.toc.bin очень большой - почему?
  • Как искать файлы из графического интерфейса gnome в debian?
  • Как найти недостающие файлы между определенным диапазоном дат?
  • Почему другой пользователь не может получить доступ к моему файлу, когда это полный путь?
  • Возвращает ли команда оболочки из командной строки, что выходные файлы были записаны?
  • Удалите файл с знаками фунта вокруг него
  • 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 - лучшая ОС в мире.