Это хорошо известная задача, которую легко описать:
Имеется текстовый файл foo.txt и файл черного списка строк исключения, по одной на line создайте файл foo_filtered.txt, содержащий только те строки файла foo.txt, которые не содержат никаких строк исключения.
Обычное приложение фильтрует предупреждения компилятора из журнала сборки, но игнорирует предупреждения о файлах, которые вам не принадлежат. Файл foo.txt - это файл предупреждений (сам отфильтрованный из журнала сборки) и файл черного списка excluded_filenames.txt с именами файлов, по одному в каждой строке.
Я знаю, как это делается на процедурных языках, таких как Perl или AWK, и я даже делал это с помощью комбинаций команд Linux, таких как cut, comm и sort.
Но я чувствую, что должен быть очень близок с xargs, и просто не вижу последнего шага.
Я знаю, что если в excluded_filenames.txt есть только одно имя файла, то
grep -v foo.txt `cat excluded_filenames.txt`
сделает это.
И я знаю, что могу получить имена файлов по одному в строке с помощью
xargs -L1 -a excluded_filenames.txt
Итак, как мне объединить эти два в одно решение без явных циклов на процедурном языке?
Ищете простое и элегантное решение.