2

У меня большой текстовый файл размером более 30 мегабайт. Я хочу удалить все строки, которые не соответствуют определенным критериям, например, строки, которые не имеют строки «START».

Какой самый простой способ сделать это?

5 ответов5

3

Если шаблон действительно так прост, grep -v будет работать:

grep -v START bigfile.txt > newfile.txt

В newfile.txt будет все из bigfile.txt, кроме строк с "START".

(Если это не очевидно, это то, что вы будете делать в терминале или другом инструменте командной строки)

2

Первоначальный вопрос спрашивал, как удалить линии, которые не соответствуют шаблону. Другими словами, как сохранить линии, которые соответствуют шаблону. Таким образом, нет необходимости для -v .

grep START infile.txt > outfile.txt

Обратите внимание, что grep может использовать регулярные выражения для более мощного сопоставления с образцом. Синтаксис немного тупой, хотя.

1

Используйте GNU sed с аргументом -i .

1
grep -v START inputfile

должно сработать. grep является стандартным для MacOS и Linux/Unix, может быть установлен на MS Windows.

Опция -v для в ст erting матч - только выходные линии , которые не содержат шаблон (обратный обычного поведения Grep).

1

Для командной строки 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .