Программа для удаления строк в текстовом файле

Я ищу программное обеспечение для Windows, которое может массово удалять строки в текстовых файлах после определенной строки.

Например, файл содержит 5 строк. Я хочу удалить строки после третьей строки. видеть:

Line 1
Line 2
Line 3
xxxxxx
xxxxxx1

Здесь я хочу сохранить первые 3 строки (строка 1, строка 2, строка 3) и удалить оставшиеся 2 строки (xxxxxx, xxxxxx1) и автоматически сохранить этот текстовый файл. Я хочу сделать это с несколькими текстовыми файлами. Хотите удалить каждую строку после 3-й строки в каждом текстовом файле внутри папки.

Любое программное обеспечение Windows для этого?

Обратите внимание, что запрос на программное обеспечение для выполнения X является актуальным на этом сайте, но вопрос о том, как сделать что-то с программным обеспечением (Могу ли я сделать это с помощью Notepad ++) не по теме - вы должны направить этот конкретный вопрос в SuperUser.
Это был не единственный мой вопрос. Я попросил программное обеспечение, и если notepad ++ может это сделать, и кто-то знает, как это сделать, я не думаю, что это создает какие-либо проблемы для кого-либо.

Ответы (3)

GnuWin может это сделать, например sed. В командной строке введите

for %f in ("*.txt") do C:\...\sed -i "1,3!d" "%f"

Команда forявляется частью командной строки Windows. %fопределяет переменную для хранения имени файла. in ("*.txt")определяет, какие файлы обрабатывать. do C:\...\sedговорит Windows запустить команду.

-iвыполнит операцию на месте, т.е. запишет в тот же файл. 1,3определяет диапазон строк, !выбирает все остальные строки, dудаляет их и "%f"передает файл для обработки в SED, поэтому он знает, какой файл обрабатывать.

GnuWin работает в Windows и является бесплатным.

Подумайте об использовании -i.bak, которое создаст резервную копию всех файлов перед их изменением (с расширением .bak).

Это можно сделать без установки программного обеспечения, а вместо этого создав простой пакетный скрипт. Вот скрипт, который будет делать то, что вы хотите:

@echo off > NEWFILE & setLocal enableDELAYedeXpansioN
set/p D=delete all after what line?
set N=
:main
for /f "tokens=* delims= " %%a in (file.txt) do (
set/a N+=1
if !N! leq !D! echo.%%a
) >> NEWFILE

Где file.txtсобственно файл . Когда вы выполняете этот скрипт, он спросит вас, после какой строки удалить, просто скажите 3. Скопируйте приведенный выше код и вставьте его в .batфайл.

Есть много способов сделать это, используя базовые инструменты Unix/Linux.

Я бы рекомендовал использовать awk в вашем случае. Чтобы запустить awk в Windows, вы можете использовать порт awk для Windows .

Мой личный опыт показывает, что быстро окупается изучение awk, если вам приходится время от времени обрабатывать текст.