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

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

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 
  • Что означает - означает объединение с файлами и каталогами Linux
  • Как разрешить пользователю создавать каталог, но не создавать вспомогательную директорию
  • Как я могу узнать, когда процесс завершил запись в файл?
  • Сценарий оболочки проверяет, существует ли файл?
  • Удалите файл с знаками фунта вокруг него
  • Быстрый инкрементный поиск файлов из оболочки
  • Предоставление пользователю возможности удалять файл, не предоставляя им права на запись в каталог
  • суммирование двух матриц, каждый из которых в другом файле
  • открыть файл, используя CDPATH и символическую ссылку
  • Какие файлы, связанные с Windows, бесполезны для пользователей * nix?
  • список файлов с похожими именами, отсортированными по сходству
  • Linux и Unix - лучшая ОС в мире.