Из одного файла-списка, удалить слова, находящиеся в другом файле, который используется как шаблон для удаления
Есть файл1.txt, который содержит слово1, слово2, слово3 и т.д, список длиный, по одному слову на строку. Есть файл2.txt, в нём тоже есть слова(1,2,3 и т.д.) с такой же огранизацией списка. Из файл1.txt нужно удалить слова, находящиеся в файл2.txt, т.е. последний используется как шаблон. Нашёл похожий вопрос тут но после выполнения получаю сообщение sed: can't read слово1: No such file or directory. Я не понял, что значит 's,^,/^,;s,$,:/d,', вариант /искомая строка/d более понятен, но не понятно как искомая строка станет шаблоном.
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
cat > ./complete.txt <<EOF
word0
word1
word2
word3
word4
word5
EOF
cat > ./patterns.txt <<EOF
word1
word3
EOF
# 1 вариант
awk 'NR==FNR{a[$0];next} !($0 in a)' ./patterns.txt ./complete.txt
# 2 вариант
grep -vf ./patterns.txt < ./complete.txt