1

Я ищу способ удалить определенные строки в файле, используя шаблоны из внешнего файла. Лучший способ - использовать sed. Я пробовал несколько статей, как это, но они не отвечают на мою задачу.

Скажем, у меня есть текстовый файл с:

Adam
Belle
Candy
Donald
Eve

И pattern.file имеет:

Don*
Candy

С grep -fv pattern.file text.file я получаю именно то, что хочу, но только в поле зрения:

Adam
Belle
Eve

Я не могу перенаправить отфильтрованный вывод в новый файл. Поэтому мне нужен способ, чтобы иметь возможность изменить исходный text.file, удалив все строки, которые соответствуют шаблону (ам) из внешнего файла.

В моем реальном случае использования text.file содержит не алфавитный порядок, не всегда с заглавной буквы, поэтому создание общего регулярного выражения для sed невозможно.

Как лучше всего передать шаблоны для удаления строк из внешнего файла?

2 ответа2

1

С GNU sed и bash:

sed -i -f <(sed 's|.*|/&/d|' pattern.file) text.file
0

Принимая ваш пример было бы легче сделать:

grep -fv pattern.file text.file > output.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .