Самый простой способ удалить ненужные строки из огромного текстового файла
2964
Shawn
У меня большой текстовый файл размером более 30 мегабайт. Я хочу удалить все строки, которые не соответствуют некоторым конкретным критериям, например, строки, которые не имеют строки «START».
Какой самый простой способ сделать это?
Какую операционную систему ты используешь?
Unfundednut 14 лет назад
0
Если шаблон действительно так прост, grep -vбудет работать:
grep -v START bigfile.txt > newfile.txt
В newfile.txt будет все из bigfile.txt, кроме строк с «START».
(В случае, если это не очевидно, это то, что вы будете делать в терминале или другом инструменте командной строки)
2
whatever
Первоначальный вопрос спрашивал, как удалить линии, которые не соответствуют шаблону. Другими словами, как сохранить линии, которые соответствуют шаблону. Таким образом, нет необходимости -v.
grep START infile.txt > outfile.txt
Обратите внимание, что grep может использовать регулярные выражения для более мощного сопоставления с образцом. Синтаксис немного тупой, хотя.
1
Ignacio Vazquez-Abrams
Используйте GNU sed с -iаргументом.
чтобы сделать ответ немного более подробным .. verbose: "sed -n -e '/ START / p' inputfile". и, возможно, будет хорошей идеей не использовать -i во время игры с командами изменения файла, на всякий случай.
akira 14 лет назад
2
1
sleske
grep -v START inputfile
должно сработать. grepСтандартно для MacOS и Linux / Unix, может быть установлен на MS Windows.
Вариант -vдля в V erting матч - только выходные линии, которые не содержат шаблон (обратный обычного поведения Grep).
1
Mike Fitzpatrick
Для командной строки 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.