Как удалить текст после 3-й строки в нескольких файлах

451
user3548321

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

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

  • Строка 1
  • Линия 2
  • Линия 3
  • хххххх
  • xxxxxx1

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

Любой способ сделать это с помощью блокнота ++ ?? заранее спасибо

1
Здравствуйте еще раз, способ, которым ваш вопрос был [написан здесь] (http://softwarerecs.stackexchange.com/questions/31505/software-to-delete-lines-in-a-text-file) в порядке, и здесь спрашивают, как Выполнить эту задачу с помощью Notepad ++ можно, соответственно, как по теме, но дополнительно запрашивать рекомендации по программному обеспечению здесь не по теме в SuperUser. Tom 8 лет назад 2
Это может немного сбивать с толку, но в SE мы пытаемся сузить вопросы, поэтому повторный запрос рекомендаций к программному обеспечению относится к рекомендациям по программному обеспечению, а запрос инструкций о том, как использовать программное обеспечение для выполнения задачи, является (в большинстве случаев, включая этот) темой в SuperUser. Задавать вопрос, включающий ** оба ** из этих вопросов на одном сайте, не по теме, так как его часть не принадлежит сайту. Tom 8 лет назад 1
Lol Вы тот же человек, который сказал то же самое, когда я задал тот же вопрос на softwarerecs.stackexchange, не так ли? упоминание о notepad ++ было не по теме, а здесь notepad ++ по теме, а вопрос о программном обеспечении не по теме .. вы меня читаете? лол user3548321 8 лет назад 0
и я удалил свой пост там и разместил здесь. опять же, вот и ты. user3548321 8 лет назад 0
Я стараюсь оставаться активным как по SuperUser, так и по программному обеспечению. Я увидел, что у одного и того же пользователя было два повторяющихся вопроса - нет, я не слежу за тобой. Tom 8 лет назад 2
и я удалил его, потому что вы сказали мне, что это не по теме, и я могу спросить здесь. Так что задал тот же вопрос здесь. Во всяком случае, если это не по теме, вы можете редактировать его так, как вам нравится user3548321 8 лет назад 0
Я [отредактировал ваш вопрос] (http://softwarerecs.stackexchange.com/posts/31505/revisions), удалив деталь, "или каким-либо образом сделать это с помощью notepad ++?" который тогда сделал это по теме на Программных Рекомендациях. Опять же, ваш первоначальный вопрос действительно включает два вопроса, один из которых делает его не по теме. Вы можете восстановить свой ответ в «Рекомендациях по программному обеспечению», теперь он по теме, и если вы удалите «Любое программное обеспечение Windows для этого?» часть здесь на SuperUser - это будет по теме здесь. Tom 8 лет назад 1
Снова, "Любое программное обеспечение Windows для этого?" = Рекомендации по программному обеспечению; "или любой другой способ сделать это с помощью блокнота ++?" = SuperUser; вы просто не можете заключить оба вопроса в один вопрос Tom 8 лет назад 0
И, кстати, я не думаю, что мы можем сказать, что это полностью не по теме. Потому что, если вы снова прочитаете мой вопрос, вы увидите, что я специально не спрашивал ни о каком стороннем программном обеспечении. Я только что сказал "Windows Software". Это может быть любое программное обеспечение, может быть встроенный текстовый редактор, такой как WordPad ++. Пока я не скажу "любое стороннее программное обеспечение для Windows", я думаю, что мой вопрос не попадет под категорию "не по теме". user3548321 8 лет назад 0
Этот вопрос не по теме, потому что вы просите нас предложить программное обеспечение, которое может делать то, что вы хотите. Если вы реструктурируете свой вопрос, чтобы спросить **, как ** делать то, что вы хотите, с конкретным программным обеспечением, оно может остаться. В противном случае он будет закрыт как не по теме. Michael Frank 8 лет назад 1
Как я уже говорил в своем предыдущем комментарии, если кто-то не запрашивает какое-либо стороннее программное обеспечение, но может быть встроенной функцией Windows или программным обеспечением, все же это не по теме? user3548321 8 лет назад 0

2 ответа на вопрос

2
Dee

This seems like quite standard text operation for a number of Linux tools (don't mind the technical incorrectness), GNU sed being one of them. Until Bash/Ubuntu comes out for Windows 10, you can use something like git bash which I tested to work for the below command.

sed -i '4,$d' * 

Would delete all lines starting from the 4th line in all files in the directory you are in.

Здравствуйте, большое спасибо за это. Это сработало, но есть проблема. После удаления строк предыдущие строки добавляются вместе. Если между первыми строками есть абзац или пробел, они исчезают после этого. Я хочу сохранить все строки / строки. Как это сделать? пожалуйста помоги user3548321 7 лет назад 0
1
Tom

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

@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файл.

Большое спасибо, но я хочу сделать это удаление внутри папок и подпапок. хочу, чтобы это удаление в каждом файле внутри много папок. Не файл за файлом .. Так я могу сделать это этим методом? Какие изменения я должен сделать? заранее спасибо. user3548321 7 лет назад 0