Поиск по сайту:
Вытапливай воск, но сохраняй мед (К. Прутков).

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

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

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

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

 

Sed в Linux

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

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

$ cat dummy.txt

 

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

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

 

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

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

$ sed '1d' dummy.txt

 

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

$ sed '5d' dummy.txt

 

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

$ sed '$d' dummy.txt

 

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

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

$ sed '1,5d' dummy.txt

 

Читать  Что такое Looking Glass в сети и как установить его на свой VPS или сервер

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

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

$ sed '1d; 2d; 3d; $d' dummy.txt

 

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

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

$ sed '2,4! d' dummy.txt

 

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

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

$ sed '/^$/d' dummy.txt

 

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

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

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

$ sed '/the/d' dummy.txt

 

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

$ sed '/brown\|the/d' dummy.txt

 

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

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

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

$ sed '/^[[:digit:]]/d' dummy.txt

 

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

$ sed '/^[tb]/d' dummy.txt

 

Читать  Как использовать оператор && в Linux

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

$ sed '/^[[:upper:]]/d' dummy.txt

 

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

$ sed '/^[[:lower:]]/d' dummy.txt[/

 

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

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

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

$ sed '/e$/d' dummy.txt

 

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

$ sed '/[en]$/d' dummy.txt

 

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

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

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

$ sed '/the/{N;d;}' dummy.txt

 

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

 

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

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

$ sed '/fox/,$d' dummy.txt

 

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

 

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

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

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

Читать  Как рекурсивно изменить разрешения файла в Linux

Удачных вычислений!

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (4 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


5 2 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Imya

Стоит заметить, что ни одна из приведенных выше конструкций не внесет изменения в файл, только в вывод. Чтобы сделать изменения в файле, нужно добавить ключ -i. Например, sed -i ‘/fox/,$d’ dummy.txt

Это может быть вам интересно


Рекомендуемое
Когда вы управляете малым бизнесом, вы, вероятно, не тратите время…

Спасибо!

Теперь редакторы в курсе.