У меня есть несколько текстовых файлов (a.txt
и b.txt
), содержащих несколько URL-адресов, каждый в отдельной строке. Думайте об этих файлах как о черных списках. Я хочу очистить мой файл c.txt
, очистив его от любой из строк в a.txt
и b.txt
. Мой подход состоит в том, чтобы переименовать c.txt
в c_old.txt
, а затем создать новый c.txt
, выделив строки в a.txt
и b.txt
.
type c_old.txt | grep -f a.txt -v | grep -f b.txt -v > c.txt
Долгое время казалось, что моя система работает нормально. Однако в последнее время я потерял почти все, что было в c.txt
, и новые добавления удаляются, несмотря на то, что они не встречаются в a.txt
или b.txt
. Понятия не имею почему.
PS Я на Windows 7, поэтому grep был установлен отдельно. Буду признателен, если есть решения, которые не требуют от меня установки дополнительных инструментов Linux.
Обновление: я обнаружил одну ошибку в моем пакетном файле. Я использовал ren c.txt c_old.txt
не понимая, что ren
отказывается перезаписывать целевой файл, если он существует. Таким образом, type c_old.txt | ...
всегда использовал одни и те же данные. Это объясняет, почему новые добавления в c.txt
были уничтожены, но не объясняет, почему пропало так много записей, которые были в c.txt
.