РЕДАКТИРОВАТЬ: я неправильно прочитал вопрос, используя BASH или powershell вместо пакета, но я все равно оставляю свой ответ для тех, кому это может понадобиться. Извините за путаницу
Не самое элегантное решение, но с использованием строковых манипуляций bash без использования регулярных выражений:
#!/bin/bash
while read -r line; do
found=0
for word in $line; do
for scan in $sentences; do
[[ $word =~ $scan ]] && found=1
done
done
[[ $found == 0 ]] && echo $line >> output.txt
sentences="${sentences} $line"
done < file.txt
Так что в основном читайте каждую строку в файле text.txt
Установить найдено 0
Для каждого слова в строке для сканирования и для каждого найденного слова, напечатанного до сих пор, проверьте, есть ли совпадение, если да, установите значение 1
Если найдено в 0, строка вывода, иначе ничего не делать
РЕДАКТИРОВАТЬ: Вот более подробная версия, показывающая, что происходит:
#!/bin/bash
while read -r line; do
found=0
echo "Scanning line : $line"
for word in $line; do
echo "Scanning word : $word"
for scan in $sentences; do
[[ $word =~ $scan ]] && found=1
done
done
[[ $found == 0 ]] && echo $line >> output.txt
sentences="${sentences} $line"
echo "Words to check : $sentences"
done < file.txt