Linux стереть последнюю строку

Содержание
  1. Remove the last line from a file in Bash
  2. For large files
  3. Команда Sed для удаления строки
  4. Sed в Linux
  5. Удаление строки с помощью sed
  6. Удалить одну строку
  7. Удалить диапазон строки
  8. Удалить несколько строк
  9. Удалить все строки, кроме указанного диапазона
  10. Удалить пустые строки
  11. Удалить линии по шаблону
  12. Удалить строки, начинающиеся с определенного символа
  13. Удалить строки, заканчивающиеся определенным символом
  14. Удаление строк, соответствующих шаблону, и следующей строки
  15. Удаление строки от совпадения с шаблоном до конца
  16. Последняя мысль
  17. 🐧 Удаление определенных строк из файла в командной строке Linux
  18. Удаление n-ой строки из файла
  19. Удаление последней строки с помощью sed
  20. Удаление диапазона строк
  21. Удаление строк, содержащих шаблон
  22. Удаление строк, начинающихся со слова
  23. Бонусный совет: Удаление всех пустых строк
  24. You may also like
  25. 📜 Чтение файла построчно на Bash
  26. 📧 В чем разница между IMAP и POP3
  27. ✔️ Как управлять контейнерами LXD от имени обычного.
  28. 📜 Руководство для начинающих по созданию первого пакета.
  29. Феноменальная популярность электроники Xiaomi: основные причины
  30. 📜 Получение вчерашней даты в Bash: Практическое руководство
  31. Использование специальных гелей при мышечных болях
  32. 📦 Как расширить/увеличить файловую систему VxFS на Linux
  33. Услуги по размещению серверного оборудования в ЦОД
  34. Для чего выполняется ИТ консалтинг на предприятиях?
  35. Leave a Comment Cancel Reply
  36. • Свежие записи
  37. • Категории
  38. • Теги
  39. • itsecforu.ru
  40. • Страны посетителей
  41. IT is good

Remove the last line from a file in Bash

The -i option does not exist in GNU sed versions older than 3.95, so you have to use it as a filter with a temporary file:

cp foo.txt foo.txt.tmp sed '$ d' foo.txt.tmp > foo.txt rm -f foo.txt.tmp 

Of course, in that case you could also use head -n -1 instead of sed .

On Mac OS X (as of 10.7.4), the equivalent of the sed -i command above is

On Mac OS X (as of 10.7.4), the equivalent of the sed -i command above is sed -i » -e ‘$ d’ foo.txt . Also, head -n -1 won’t currently work on a Mac.

Could you explain what ‘$ d’ regex does? It’s question about removing last line, so I think this is the most important part for everyone viewing this question. Thanks 🙂

@Miro : By no means is $ d a regex. It is a sed command. d is the command for deleting a line, while $ means «the last line in the file». When specifying a location (called «range» in sed lingo) before a command, that command is only applied to the specified location. So, this command explicitly says «in the range of the last line in a file, delete it». Quite slick and straight to the point, if you ask me.

This is by far the fastest and simplest solution, especially on big files:

head -n -1 foo.txt > temp.txt ; mv temp.txt foo.txt 

if You want to delete the top line use this:

which means output lines starting at line 2.

Do not use sed for deleting lines from the top or bottom of a file — it’s very very slow if the file is large.

head -n -1 doesn’t work on bdsutils’ head. at least not in the version macos is using, so this doesn’t work.

@johannes_lalala On Mac, you can brew install coreutils (GNU core utilities) and use ghead instead of head .

Here is a simple bash script that automates it in case you have multiple files with different number of lines at the bottom to delete: cat TAILfixer FILE=$1; TAIL=$2; head -n -$ $ > temp ; mv temp $ Run it for deleting 4 lines for instance from myfile as: ./TAILfixer myfile 4 of course first make it executable by chmod +x TAILfixer

Читайте также:  Печать linux to windows to linux

Thumbs up because it worked, but for all the comparison to sed , this command is pretty darn slow as well

For large files

I had trouble with all the answers here because I was working with a HUGE file (~300Gb) and none of the solutions scaled. Here’s my solution:

filename="example.txt" file_size="$(stat --format=%s "$filename")" trim_count="$(tail -n1 "$filename" | wc -c)" end_position="$(echo "$file_size - $trim_count" | bc)" dd if=/dev/null of="$filename" bs=1 seek="$end_position" 

Or alternatively, as a one liner:

dd if=/dev/null of= bs=1 seek=$(echo $(stat --format=%s ) - $( tail -n1 | wc -c) | bc ) 

In words: Find out the length of the file you want to end up with (length of file minus length of length of its last line, using bc ), and set that position to be the end of the file (by dd ing one byte of /dev/null onto it).

This is fast because tail starts reading from the end, and dd will overwrite the file in place rather than copy (and parse) every line of the file, which is what the other solutions do.

NOTE: This removes the line from the file in place! Make a backup or test on a dummy file before trying it out on your own file!

Источник

Команда Sed для удаления строки

Команда Sed для удаления строки

S ed — это встроенный в Linux инструмент для работы с текстом. Термин sed означает «редактор потока». Несмотря на название, sed сам по себе не является текстовым редактором. Вместо этого он принимает текст в качестве входных данных, выполняет различные модификации текста в соответствии с инструкциями и распечатывает выходные данные.

Эта статья продемонстрирует, как использовать sed для удаления строки из текста.

Sed в Linux

Полное имя sed дает нам представление о методе его работы. Sed принимает вводимый текст как «поток». Текст может поступать откуда угодно — из текстового файла или стандартного вывода (STDOUT). После ввода данных sed работает с ним построчно.

Для демонстрации я сгенерировал простой текстовый файл.

Удаление строки с помощью sed

Чтобы удалить строку, мы воспользуемся командой sed «d». Обратите внимание, что вы должны объявить, какую строку нужно удалить. В противном случае sed удалит все строки.

Удалить одну строку

Следующая команда sed удалит первую строку текста.

В основном, чтобы удалить строку, вам нужен номер строки целевой строки. Удалим строку 5.

Чтобы удалить последнюю строку текстового файла, вместо ручного вычисления номера строки используйте «$».

Удалить диапазон строки

Sed может удалить ряд строк. Здесь минимальное значение строки равно 1, а максимальное значение строки — 5. Чтобы объявить диапазон, мы используем запятую (,).

Удалить несколько строк

Что, если строки, которые вы хотите удалить, не находятся в фиксированном диапазоне? Взгляните на следующую команду sed. Обратите внимание, что мы используем точку с запятой (;) в качестве разделителя. По сути, каждый параметр с разделителями представляет собой отдельную команду sed.

Удалить все строки, кроме указанного диапазона

В следующем примере sed сохранит только строки, описанные в диапазоне. Здесь, «!» — оператор отрицания, указывающий sed сохранить определенные строки.

Удалить пустые строки

Если в тексте есть несколько пустых или пустых строк, следующая команда sed удалит их все.

Удалить линии по шаблону

Sed может искать определенный узор и выполнять указанные действия на линии. Мы можем использовать эту функцию для удаления определенных строк, соответствующих шаблону.

Читайте также:  Репозиторий debian astra linux orel

Давайте посмотрим на следующую демонстрацию. Sed удалит любую строку, содержащую строку «the».

Мы также можем описать несколько строк для поиска. Каждая строка разделяется символом «\|».

Удалить строки, начинающиеся с определенного символа

Чтобы обозначить начало строки, мы будем использовать символ каретки (^).

Следующая команда sed удалит все строки, начинающиеся с цифры. Здесь группа символов «[:digit:]» описывает все цифры (0–9).

Мы также можем описать несколько символов для действительного совпадения. В следующем примере будут найдены все строки, начинающиеся с «t» и «b».

В следующем примере показано, как удалить все строки, начинающиеся с символа верхнего регистра. Здесь мы используем группу символов верхнего регистра «[: upper:]».

Если целевые строки содержат символы нижнего регистра в начале, используйте группу символов нижнего регистра «[: lower:]».

Удалить строки, заканчивающиеся определенным символом

Чтобы обозначить конец строки, мы можем использовать символ «$». Он описывает совпадение с последним вхождением шаблона.

В следующем примере sed удалит строки, заканчивающиеся на «e».

Попробуем поискать по нескольким символам.

Удаление строк, соответствующих шаблону, и следующей строки

Мы уже продемонстрировали, как удалить строку, если шаблон совпадает. Мы также можем расширить и удалить следующую строку.

Ознакомьтесь со следующей командой sed.

Sed будет соответствовать строке, содержащей «the», и также удалит следующую строку.

Удаление строки от совпадения с шаблоном до конца

Мы можем расширить предыдущий пример, чтобы приказать sed удалить все строки, начиная с первого совпадения шаблона.

Здесь sed удалит строку, которая соответствует шаблону «первая» и все последующие строки.

Последняя мысль

Sed — простой инструмент. Однако он может творить чудеса благодаря поддержке регулярных выражений. Sed также легко интегрируется в различные скрипты.

Это было всего лишь краткое руководство, демонстрирующее одну из функций sed — удаление строк. С помощью sed вы можете делать множество других вещей.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

🐧 Удаление определенных строк из файла в командной строке Linux

Задача проста. Вам нужно удалить определенные строки из текстового файла в терминале Linux.

Вы можете использовать текстовый редактор типа Vim или Nano, войти в файл и удалить нужные строки.

Сейчас мы рассмотрим продолжение нашей прошлой статьи:

Однако такой подход не подходит для автоматизации с помощью скриптов bash.

Вместо этого можно воспользоваться мощным редактором командной строки sed и удалить строки, соответствующие определенным критериям.

И, конечно же, вы можете использовать sed в своих скриптах shell.

Позвольте мне показать несколько примеров использования.

Приведенные здесь примеры мгновенно изменяют исходный файл.

Прежде чем приступать к экспериментам с файлом, неплохо было бы сделать его резервную копию.

Удаление n-ой строки из файла

Представьте, что вам нужно удалить 7ую строку в файле.

Вы можете использовать команду sed следующим образом

Позвольте мне объяснить, как это работает:

  • -i: Эта опция включает редактирование на месте. По умолчанию sed отображает только вывод. С опцией -i он изменяет фактический файл, не отображая его на дисплее.
  • 7d: Здесь 7 – это номер строки, а d указывает на удаление строки.
  • filename: Это файл, который вы хотите изменить. Вы также можете указать абсолютный или относительный путь, если файл находится в другом каталоге.

Позвольте мне показать на реальном примере.

Вот пример текстового файла с именем agatha.txt:

The Mystery of the Blue Train The Seven Dials Mystery The Murder at the Vicarage Giant's Bread The Floating Admiral The Sittaford Mystery Peril at End House Lord Edgware Dies

Чтобы удалить 4-ю строку из этого файла, я использую:

Читайте также:  Linux отключить файрвол ubuntu

Это приведет к следующему отображению с удаленной строкой “Giant’s Bread”:

The Mystery of the Blue Train The Seven Dials Mystery The Murder at the Vicarage The Floating Admiral The Sittaford Mystery Peril at End House Lord Edgware Dies

Теперь, допустим, вы хотите удалить первую строку файла в командной строке Linux.

Используйте sed следующим образом:

Если вы хотите увидеть результат манипуляции, не изменяя сам файл, не используйте опцию -i команды sed.

Удаление последней строки с помощью sed

Вы научились удалять определенную строку, но что если вам нужно удалить последнюю строку?

Вы всегда можете получить общее количество строк в файле с помощью команды wc и использовать это число в sed.

Однако sed имеет специальный способ удаления последней строки файла.

Теперь вам больше не нужно беспокоиться о количестве строк.

Удаление диапазона строк

Аналогично тому, что вы видели ранее, вы также можете удалить диапазон строк из файла.

Предположим, вам нужно удалить строки с 11 по 15, вы можете указать диапазон следующим образом:

Обратите внимание, что при этом будут удалены строки 11 и 15, а не только те, которые находятся между ними.

Удаление строк, содержащих шаблон

Вы также можете использовать sed для удаления всех строк, которые содержат заданную строку или соответствуют определенному шаблону.

Команда, показанная ниже удалит все строки, содержащие слово ‘string’:

Обратите внимание, что поиск осуществляется с учетом регистра.

Вы также можете использовать regex-шаблон вместо обычной строки.

Удаление строк, начинающихся со слова

Если вы хотите удалить все строки, начинающиеся с определенного слова или буквы, вам просто нужно указать шаблон regex следующим образом:

Бонусный совет: Удаление всех пустых строк

Прежде чем закончить эту статью, позвольте мне быстро рассказать, как вы можете удалить все пустые строки с помощью sed:

Надеюсь, этот быстрый совет поможет вам удалить строки из текстового файла в командной строке Linux.

itisgood
🐧 Как найти PID и PPID процесса в системах Linux
🐍 Как создать игру “Змейка” на языке Python

You may also like

📜 Чтение файла построчно на Bash

📧 В чем разница между IMAP и POP3

✔️ Как управлять контейнерами LXD от имени обычного.

📜 Руководство для начинающих по созданию первого пакета.

Феноменальная популярность электроники Xiaomi: основные причины

📜 Получение вчерашней даты в Bash: Практическое руководство

Использование специальных гелей при мышечных болях

📦 Как расширить/увеличить файловую систему VxFS на Linux

Услуги по размещению серверного оборудования в ЦОД

Для чего выполняется ИТ консалтинг на предприятиях?

Leave a Comment Cancel Reply

• Свежие записи

• Категории

• Теги

• itsecforu.ru

• Страны посетителей

IT is good

В этой статье вы узнаете, как удалить удаленный Git-репозиторий. Процесс прост, но его полезно запомнить, чтобы избежать неожиданностей в будущем. Git – это…

В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…

Продажа ноутбука нередко становится хлопотным занятием. Кроме поиска покупателя, продавцу необходимо подготовить устройство перед проведением сделки. Но если последовательно выполнить все шаги, ничего…

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

Вторичное жильё выгоднее для молодых семей, желающих приобрести свою первую квартиру. Сталкиваясь с ипотечным кредитованием, можно избежать много лишней суеты и проблем, если…

Источник

Оцените статью
Adblock
detector