Эта статья рассказывает, как в командной строке Windows удалить строку в текстовом файле исходя из её положения в файле, а не из её содержимого. Другими словами, как удалить строку по её номеру, например, вторую, пятую или предпоследнюю и так далее.

Решение построено на использовании программы nhrt, в которой имеется режим обработки только вхождений с указанными номерами. Этот режим включается параметром occurences. Используя программу nhty в режиме поиска целой строки (регулярное выражение) в режиме удаления с заданием номеров вхождений, получаю удаление строк по их номерам в файле.

Как удалить первую строку файла
Как удалить вторую строку файла
Как удалить последнюю строку файла
Как удалить первую и последнюю строки файла
Как удалить одну строку или несколько строк по их номерам
Файлы для скачивания

Как удалить первую строку файла

Чаще всего требуется удалить первую строку текстового файла csv, tsv, или табличного содержимого, в котором первая строка выполняет роль заголовка, для последующей обработки в программе, которая не использует заголовки, например:

Продукт,Вода,Белки,Жиры,Углев.,Ккал
фасоль,"14,0","22,3","1,7","54,5",309
гречка ядрица,"14,0","12,6","2,6","68,0",329
...

Команда для удаления первой строки выглядит так:

nhrt.exe -sre:".*\r\n" -occ:1 -e -o:d калории.csv

Как работает эта команда:

  • Параметр -sre:".*\r\n" задаёт поиск целой строки, включая символы окончания строки (перевод каретки и новая строка для Windows) и соответвует строке с любым содержимым, даже пустым. См. sre (searchregularexpression).
  • Параметр -occ:1 задаёт выполнение изменения только для первого вхождения, то есть по сути только для первой строки файла. См. occ (occurences).
  • Параметр -e задаёт действие для найденного вхождения – удаление. См. e (erase).
  • Параметр -o:d задаёт режим вывода информации о ходе работы программы и не влияет на обработку текста.
  • Параметр калории.csv задаёт файл для обработки (может быть несколько, может быть маска).

После выполнения этой команды строки с названиями полей в файле больше нет:.

фасоль,"14,0","22,3","1,7","54,5",309
гречка ядрица,"14,0","12,6","2,6","68,0",329
...

Как удалить вторую строку файла

Например, вторая строка файла содержит просто разделители, которые не нужны при последующей обработке:

Продукт             Вода Белки Жиры Углев. Ккал
------------------- ---- ----- ---- ------ ----
Фасоль              14,0  22,3  1,7   54,5  309
Гречка ядрица       14,0  12,6  2,6   68,0  329
...

Чтобы её удалить, достаточно задать её номер 2 в occ:

nhrt -sre:".*\r\n" -occ:2 -e -o:d калории.txt

После выполнения команды строки с разделителями в файле не будет:

Продукт             Вода Белки Жиры Углев. Ккал
Фасоль              14,0  22,3  1,7   54,5  309
Гречка ядрица       14,0  12,6  2,6   68,0  329
...

Как удалить последнюю строку файла

Что, если последняя строка файла мешает последующей обработке, так как она содержит ненужную информацию:

...
судак               78,9  19,0  0,8    0,0   83
щука                70,4  18,8  0,7    0,0   82
Итого

Команда для удаления последней строки, независимо от её содержимого, выглядит так:

nhrt.exe -sre:"\r\n.*" -occ:-1 -e -o:d калории.txt

По сравнению с предыдущими примерами,

  • В регулярном выражении символы перевода строки перенесены в начало выражения: -sre:"\r\n.*"
  • Номер вхождения, он же номер строки для удаления задаётся как -occ:-1, то есть со знаком «-» – это означает вхождение номер 1 с конца файла.

После выполнения этой команды в файле не останется строка с «Итого».

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

Это пример показывает одновременное удаление первой и последней строк в текстовом файле: Для этого нужно выполнить две команды, рассмотренные ранее:

nhrt.exe -sre:".*\r\n" -occ:1 -e -o:d калории.txt
nhrt.exe -sre:"\r\n.*" -occ:-1 -e -o:d калории.txt

Чтобы выполнять удаление обеих строк за один вызов программы nhrt, можно воспользоваться режимом обработки по списку команд:-list

nhrt.exe -list:список.txt -o:d калории.txt

Файл список.txt содержит обе команды:

-sre:".*\r\n" -occ:1 -e 
-sre:"\r\n.*" -occ:-1 -e 

Как удалить одну строку или несколько строк по их номерам

Для этого достаточно указать номера строк, например, удаление второй строки:

nhrt.exe -sre:".*\r\n" -occ:2 -e -o:d калории.txt

Или удаление строк с 6 по 8:

nhrt.exe -sre:".*\r\n" -occ:6-8 -e -o:d калории.txt

Удаление третьей с конца строки и последней строки:

nhrt.exe -sre:"\r\n.*" -occ:-3,-1 -e -o:d %fn%

Файлы для скачивания

Примеры можно скачать

Узнать больше

Программа nhrt

Программа nhrt – это программа командной строки Windows для замены текста в текстовых файлах.

Как удалить строку по номеру
Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *