Как удалить первую и последнюю строку из текстового файла c#?
Я нашел этот код в stackoverflow для удаления первой и последней строки из текстового файла.
но я не понимаю, как объединить этот код в один, чтобы он удалил 1st и последняя строка из одного файла?
то, что я пытался использовать streamreader, прочитало файл, а затем пропустило 1-ю и последнюю строку streamwriter для записи в новый файл, но не смог получить правильную структуру.
удалить первую строку.
удалить последние линия.
3 ответов
вы можете добавить Skip и Take методы. Не забудьте вычесть соответствующее количество строк Take метод. Чем больше вы пропускаете в начале, тем меньше остается строк.
хотя, вероятно, не является серьезной проблемой в этом случае, существующие ответы все полагаются на чтение всего содержимого файла в память в первую очередь. Для небольших файлов это, вероятно, нормально, но если вы работаете с очень большими файлами, это может оказаться запретительным.
достаточно тривиально создать SkipLast эквивалент существующего Skip метод Linq:
если мы также определяем метод, который позволяет нам перечислять по каждой строке файла без пребуферизация весь файл (в: https://stackoverflow.com/a/1271236/381588):
затем мы можем использовать следующую однострочную строку для записи нового файла, который содержит все строки из исходного файла, кроме первой и последней:
это, несомненно, (значительно) больше кода, чем другие ответы, которые уже были размещены здесь, но должны работать с файлами практически любого размера (а также предоставлять код для потенциально полезный SkipLast метод расширения).
Удаление определенных строк из файла в командной строке Linux

Задача проста. Вам нужно удалить определенные строки из текстового файла в терминале Linux.
Вы можете использовать текстовый редактор типа Vim или Nano, войти в файл и удалить нужные строки.
Сейчас мы рассмотрим продолжение нашей прошлой статьи:
Однако такой подход не подходит для автоматизации с помощью скриптов bash.
Вместо этого можно воспользоваться мощным редактором командной строки sed и удалить строки, соответствующие определенным критериям.
И, конечно же, вы можете использовать sed в своих скриптах shell.
Позвольте мне показать несколько примеров использования.
Приведенные здесь примеры мгновенно изменяют исходный файл.
Прежде чем приступать к экспериментам с файлом, неплохо было бы сделать его резервную копию.
Удаление n-ой строки из файла
Представьте, что вам нужно удалить 7ую строку в файле.
Вы можете использовать команду sed следующим образом
Позвольте мне объяснить, как это работает:
- -i: Эта опция включает редактирование на месте. По умолчанию sed отображает только вывод. С опцией -i он изменяет фактический файл, не отображая его на дисплее.
- 7d: Здесь 7 – это номер строки, а d указывает на удаление строки.
- filename: Это файл, который вы хотите изменить. Вы также можете указать абсолютный или относительный путь, если файл находится в другом каталоге.
Позвольте мне показать на реальном примере.
Вот пример текстового файла с именем agatha.txt:
Чтобы удалить 4-ю строку из этого файла, я использую:
Это приведет к следующему отображению с удаленной строкой “Giant’s Bread”:
Теперь, допустим, вы хотите удалить первую строку файла в командной строке Linux.
Используйте sed следующим образом:
Удаление последней строки с помощью sed
Вы научились удалять определенную строку, но что если вам нужно удалить последнюю строку?
Вы всегда можете получить общее количество строк в файле с помощью команды wc и использовать это число в sed.
Однако sed имеет специальный способ удаления последней строки файла.
Теперь вам больше не нужно беспокоиться о количестве строк.
Удаление диапазона строк
Аналогично тому, что вы видели ранее, вы также можете удалить диапазон строк из файла.
Предположим, вам нужно удалить строки с 11 по 15, вы можете указать диапазон следующим образом:
Обратите внимание, что при этом будут удалены строки 11 и 15, а не только те, которые находятся между ними.
Удаление строк, содержащих шаблон
Вы также можете использовать sed для удаления всех строк, которые содержат заданную строку или соответствуют определенному шаблону.
Команда, показанная ниже удалит все строки, содержащие слово ‘string’:
Обратите внимание, что поиск осуществляется с учетом регистра.
Вы также можете использовать regex-шаблон вместо обычной строки.
Удаление строк, начинающихся со слова
Если вы хотите удалить все строки, начинающиеся с определенного слова или буквы, вам просто нужно указать шаблон regex следующим образом:
Бонусный совет: Удаление всех пустых строк
Прежде чем закончить эту статью, позвольте мне быстро рассказать, как вы можете удалить все пустые строки с помощью sed:
Надеюсь, этот быстрый совет поможет вам удалить строки из текстового файла в командной строке Linux.
Как удалить последнюю строку в текстовом файле?
У меня есть простой текстовый файл журнала с расширением.txt с пробелом в конце этого текстового файла каждый раз, когда файл журнала создается из сторонней программы.
Поэтому есть ли методы или коды, которые я могу использовать, чтобы удалить последнюю строку текстового файла?
Пример текстового файла журнала:
4 ответа
Как насчет чего-то вроде:
Технически, вы не удаляете строку из файла. Вы читаете содержимое файла и записываете его обратно, за исключением содержимого, которое хотите удалить.
Этот код выполняет чтение всех строк в массив и записывает эти строки обратно в файл, исключая только последнюю строку. (Метод Take() (часть LINQ) принимает указанное количество строк, которое в нашем случае равно length — 1). Вот, var lines можно читать как String[] lines ,
Используйте этот метод, чтобы удалить последнюю строку файла:
Редактировать: понял, что переменная линий не существовало ранее, поэтому я обновил код.
Если вы хотите удалить последние N строк из файла, не загружая все в память:
Что происходит, что вы буферизуете каждую новую строку в очереди с измерением numLastLinesToIgnore и вытолкнуть из него строку для записи, только когда очередь заполнена. Вы на самом деле читаете файл вперед и можете остановить numLastLinesToIgnore строк до конца файла, не зная заранее общего количества строк.
Обратите внимание, что если текст имеет меньше, чем numLastLinesToIgnore , результат пуст.
Я придумал это как зеркальное решение этого вопроса: Удалить конкретную строку из текстового файла?