Это - коммерческая 64-разрядная операционная система UNIX HP (на основе ядра Маха - который Mac OS X также на основе),
Это для архитектуры системы команд Alpha только - хотя был недолгий порт Intel.
Вообще говоря использование подобно многим другой *, отклоняет, но местоположение различных файлов конфигурации, исполняемые файлы и т.д. могут быть не, где Вы ожидаете.
Это немного хитро, если Вы хотите объяснить условия, которые могут наложиться, например, одна строка, содержащая banana
достаточно должен рассчитать как использование обоих ban
и nan
.
Вот минимально протестированный, быстрый-и-грязный сценарий жемчуга. Это читает строки для поиска (иглы) и имена файлов, затем создает регулярное выражение, которое соответствует любой из игл. Когда это находит соответствие, это удаляет совпавшую строку из набора игл и восстанавливает regex. Иглы, которые перенесены в конце, являются теми, Вы после.
#! /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
\n
, \t
и пространство используется по умолчанию для разделения замен команды, таким образом, нет никакого смысла изменения '\n'
кому: ' '
. Ограничение IFS к новой строке и делает обратная конверсия даже имела бы больше смысла, так как символы новой строки, менее вероятно, произойдут в именах файлов, чем пробелы. Также обратите внимание, что поколение имени файла также выполняется (кроме zsh) на замену команды, таким образом, символы пробела в именах файлов не являются единственными проблематичными (см. set -f
отключить поколение имени файла).
– Stéphane Chazelas
08.11.2012, 00:27
\n
значения по умолчанию. Поэтому, возможно, пройдите через sed для добавления кавычек? или пойдите с для цикла?
– Drake Clarris
08.11.2012, 17:00