У меня большой текстовый файл размером более 30 мегабайт. Я хочу удалить все строки, которые не соответствуют определенным критериям, например, строки, которые не имеют строки «START».
Какой самый простой способ сделать это?
У меня большой текстовый файл размером более 30 мегабайт. Я хочу удалить все строки, которые не соответствуют определенным критериям, например, строки, которые не имеют строки «START».
Какой самый простой способ сделать это?
Если шаблон действительно так прост, grep -v
будет работать:
grep -v START bigfile.txt > newfile.txt
В newfile.txt будет все из bigfile.txt, кроме строк с "START".
(Если это не очевидно, это то, что вы будете делать в терминале или другом инструменте командной строки)
Первоначальный вопрос спрашивал, как удалить линии, которые не соответствуют шаблону. Другими словами, как сохранить линии, которые соответствуют шаблону. Таким образом, нет необходимости для -v
.
grep START infile.txt > outfile.txt
Обратите внимание, что grep может использовать регулярные выражения для более мощного сопоставления с образцом. Синтаксис немного тупой, хотя.
Используйте GNU sed с аргументом -i
.
grep -v START inputfile
должно сработать. grep
является стандартным для MacOS и Linux/Unix, может быть установлен на MS Windows.
Опция -v
для в ст erting матч - только выходные линии , которые не содержат шаблон (обратный обычного поведения Grep).
Для командной строки Windows (help find
параметры):
find /v "START" original_file.txt > new_file.txt
Для Linux, OS X и т.д. (man grep
для параметров):
grep -v "START" original_file.txt > new_file.txt
Для более сложного сопоставления текста grep
предлагает гораздо больше функциональности, чем find
. Если вы работаете в Windows, вы можете легко найти порт grep
или использовать Windows findstr
вместо find
.