Как полностью удалить строку из текстовика (txt), если в ней есть элемент из блек-листа (txt)?

Есть 2 файла файл LIST_WITH_FILE_CONTENT.txt и BLACK_LIST.txt , как из первого удалить каждую строку (полностью) в которой содержится хотя-бы одно слово из второго файла (блэк листа).

Как пример содержание файла LIST_WITH_FILE_CONTENT.txt
Погиб поэт! — невольник чести —
Пал, оклеветанный молвой,
С свинцом в груди и жаждой мести,
Поникнув гордой головой!..
Не вынесла душа поэта
Позора мелочных обид,
Восстал он против мнений света


Как пример содержание файла BLACK_LIST.txt
поэт
гордой головой
мелочных обид
как прежде


Пишу скрипты на Browser Automation Studio, накидал JS для этого (см ниже). Но скрипт находит строку и удаляет её только если в ней есть блэк-лист слово и более ничего другого нету кроме блэклист слова.
Если в строке в файле LIST_WITH_FILE_CONTENT.txt есть что-то еще , то он эту строку почему-то вместо удаления мимо пропустит.

JS Скрип набросал:
[[LIST_WITH_FILE_CONTENT]] = [[LIST_WITH_FILE_CONTENT]].filter(function(e){
 return [[BLACK_LIST]].indexOf(e) < 0
})
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
@VladimirAsmo
...
return [[BLACK_LIST]].indexOf(e) < 0
...

Ваша инструкция: оставить элемент, если в массиве BLACK_LIST есть строка e. (Arr.indexOf(str) - вот, что вы делаете)
Вам же нужно на каждую строку пройти по массиву запрещенных слов и посмотреть, есть ли в этой строке одно из них, что то вроде должно подойти:
[[LIST_WITH_FILE_CONTENT]] = [[LIST_WITH_FILE_CONTENT]].filter(function(line){
  return [[BLACK_LIST]].every(function(forbiddenWord) {
    return !line.includes(forbiddenWord); // или line.indexOf(forbiddenWord) === -1;
  });
});

UPD: добавил закрывающую скобку у метода every()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Не факт, что мой ответ идеален, но даю его как направление поиска:

Сначала сформируем regex-шаблон поиска запретных слов и выражений: поэт|гордой головой|мелочных обид|как прежде

Затем пробежим по всем строчкам, сравнивая их с этм шаблоном. Кто удовлетворяет шаблону, того удаляем; ну или переносим в другой текстовик строчки, которые не удовлетворяют шаблону, а старый текстовик, если он не нужен, можно удалить.

На всякий случай приведу вариант для командной строки Unix Shell: grep -vE regex-шаблон файл-текстовик
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы