С GNU sed и bash:
sed -i -f <(sed 's|.*|/&/d|' pattern.file) text.file
Я ищу способ удалить определенные строки в файле, используя шаблоны из внешнего файла. Лучший способ - использовать sed. Я пробовал несколько статей, как это, но они не отвечают на мою задачу.
Скажем, у меня есть текстовый файл с:
Adam Belle Candy Donald Eve
И pattern.file имеет:
Don* Candy
При этом grep -fv pattern.file text.file
я получаю именно то, что хочу, но только с учетом:
Adam Belle Eve
Я не могу перенаправить отфильтрованный вывод в новый файл. Поэтому мне нужен способ, чтобы иметь возможность изменить исходный text.file, удалив все строки, которые соответствуют шаблону (ам) из внешнего файла.
В моем реальном случае использования text.file содержит не алфавитный порядок, не всегда с заглавной буквы, поэтому создание общего регулярного выражения для sed невозможно.
Как лучше всего передать шаблоны для удаления строк из внешнего файла?
С GNU sed и bash:
sed -i -f <(sed 's|.*|/&/d|' pattern.file) text.file