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

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

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 
  • Как неинвазивно проверить доступ на запись к файлу?
  • как каталоги реализуются в файловой системе UNIX?
  • Как сократить текущий путь к каталогу, указанный на терминале?
  • Почему запись в существующий файл происходит быстрее, чем запись нового пустого файла?
  • Извлекать записи из файла в диапазоне от одной даты к другой
  • Как перечислять размеры файлов каталогов / файлов в целом в UNIX-подобных системах?
  • Сопоставление файлов с разделителями табуляции
  • Сравните два файла по строкам без комм (мне нужно поддерживать порядок файла 1)
  • Как удалить этот неуправляемый каталог?
  • Рабочий процесс на основе файлов и каталогов
  • Что означает ./ (точка слэш) в linux?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.