- 😡 Как удалить строки, соответствующие определенному шаблону в файле, используя SED
- Удалить строки, соответствующие определенному шаблону в файле, используя SED
- sed -d
- Удалить строку в которой нет определённого паттерна
- Удалить первые несколько строк
- Удалить пустые строки
- Удалить комментарии
- Удалить комментарии и пустые строки
- Удалить строку со словом
- Удаление без d
- 🐧 Удаление определенных строк из файла в командной строке Linux
- Удаление n-ой строки из файла
- Удаление последней строки с помощью sed
- Удаление диапазона строк
- Удаление строк, содержащих шаблон
- Удаление строк, начинающихся со слова
- Бонусный совет: Удаление всех пустых строк
- You may also like
- 📜 Чтение файла построчно на Bash
- 📧 В чем разница между IMAP и POP3
- ✔️ Как управлять контейнерами LXD от имени обычного.
- 📜 Руководство для начинающих по созданию первого пакета.
- Феноменальная популярность электроники Xiaomi: основные причины
- 📜 Получение вчерашней даты в Bash: Практическое руководство
- Использование специальных гелей при мышечных болях
- 📦 Как расширить/увеличить файловую систему VxFS на Linux
- Услуги по размещению серверного оборудования в ЦОД
- Для чего выполняется ИТ консалтинг на предприятиях?
- Leave a Comment Cancel Reply
- • Свежие записи
- • Категории
- • Теги
- • itsecforu.ru
- • Страны посетителей
- IT is good
- Удаление строк из файла с использованием sed
- Sed: удалить одну или несколько строк из файла
- Синтаксис
- Примеры Sed
😡 Как удалить строки, соответствующие определенному шаблону в файле, используя SED
В этом руководстве мы узнаем, как удалять строки, соответствующие определенному шаблону в файле, используя SED.
SED – это потоковый редактор, который выполняет базовую фильтрацию текста и преобразования входного потока (файла или ввода из конвейера).
Удалить строки, соответствующие определенному шаблону в файле, используя SED
В нашем предыдущем руководстве мы рассмотрели, как удалять сктроки, соответствующие определенным шаблонам в VIM.
Вы можете проверить этот метод, перейдя по ссылке ниже;
Теперь давайте рассмотрим различные примеры удаления строк, соответствующих определенному шаблону, в файле с помощью SED.
Для демонстрации мы будем использовать семь цветов радуги в файле.
cat colors This is color red This is color orange This is color yellow This is color green This is color blue This is color indigo This is color violet
Как и в VIM, мы будем использовать команду d для удаления определенного пространства шаблонов с помощью SED.
Для начала, если вы хотите удалить строку, содержащую ключевое слово, вы должны запустить sed, как показано ниже.
Где опция -i указывает место в файл.
Если вам нужно выполнить пробный прогон (без фактического удаления строки с ключевым словом) и вывести результат в стандартный вывод, опустите опцию -i.
Например, удалите строку, содержащую ключевое слово green, которую вы запустите;
sed '/green/d' colors This is color red This is color orange This is color yellow This is color blue This is color indigo This is color violet
Точно так же вы можете запустить команду sed с опцией -n и командой p, (!p).
sed -n '/green/!p' colors This is color red This is color orange This is color yellow This is color blue This is color indigo This is color violet
Удалить строки, содержащие несколько ключевых слов, например, удалить строки с ключевым словом green или строки с ключевым словом violet.
sed '/green\|violet/d' colors This is color red This is color orange This is color yellow This is color blue This is color indigo
Если вам нужно удалить строки, но создать резервную копию исходного файла, используйте параметр -i в формате -i.bak.
Это создаст файл .bak оригинального имени файла.
sed -i.bak '/green\|violet/d' colors
Удалить все строки, кроме тех, которые содержат определенный шаблон или ключевое слово;
sed '/green/!d' colors This is color green
sed '/green\|violet/!d' colors This is color green This is color violet
Чтобы удалить строки, начинающиеся с определенного символа или шаблона, например, строки комментариев, начинающиеся с # или строки, начинающиеся с ключевого слова amos.
Удалить строки, заканчивающиеся определенным шаблоном или символом, например, удалить строки, начинающиеся с символа o или ключевого слова amos;
Чтобы объединить вышеперечисленное, вы можете удалить строки, заканчивающиеся буквой o или ключевым словом amos;
Удалить пустые строки или строки, содержащие один или несколько пробелов;
Удалить пустые строки или строки, которые на одной или нескольких вкладках;
Что ж, это лишь малая часть того, что мы могли бы рассказать о том, как удалять строки, соответствующие определенному шаблону в файле, используя SED.
Не стесняйтесь добавлять больше примеров и предложений в комментариях ниже.
sed -d
Удалить строку в которой нет определённого паттерна
Для таких операций можно использовать !d — это противоположная d операция — удалятся строки где паттерна нет, то есть останутся те, где паттерн присутствует.
Например в файле visited.log Есть строки вида
Если стоит задача выписать в отдельный файл только посещения heihei.ru
sed ‘ / heihei / !d ‘ visited.log > hh.log
cat hh.log
Удалить первые несколько строк
Допустим Вы хотите удалить три первые строки файла example.txt
Удалить пустые строки
Если строка действительно пустая, то подойдёт команда
Обычно жизнь более жестока, и в строках содержатся пробелы.
Удалить такие строки тоже можно
$ sed ‘ / ^[[:space:]]*$ / d ‘ input.txt > output.txt
Удалить комментарии
Допустим, у вас есть код или просто текст в котором много комментариев.
Строка с комментариями начинается с символа #
Рассмотрим файл websites
Чтобы удалить строки с комментариями выполните
Опция -i позволяет изменять текущий файл
Если хотите сохранить исходный файл а текст без комментариев записать в новы (если вы уже удалили комментарии — убедитесь, что вы их вернули обратно)
sed ‘/^#/ d ‘ websites > nocomments
cat nocomments
Опция -i не нужна так как исходный файл мы не изменяли
Чтобы удалить строки с комментариями и пустые строки выполните
Удалить комментарии и пустые строки
sed -i.bak ‘/^\s*#/ d ;/^$/ d ‘ nginx.conf
vi nginx.conf
Удалить строку со словом
Удалить все строки где встречается слово Apple в файле input.txt
Here is an Apple Here Pen Here ApplePen Integer is Here Here is a Float Here Pen Here Pineapple Here PineapplePen Umm Apple Apple Apple Pen
Сделать это можно с помощью опции d
sed ‘/Apple/d‘ input.txt > output.txt
Integer is Here Here is a Float Here Pen Here Pineapple Here PineapplePen
Усложним условие — удалим все строки где есть слово Pineapple и слово Integer
sed ‘/Pineapple\|Integer/ d ‘ input.txt > output.txt
| выступает в роли логического ИЛИ
\ нужна чтобы экранировать |
Here is an Apple. Here is a Pen. Here is an ApplePen Here is a Float Umm Apple Apple Apple Pen
Удаление без d
Удалять из файлов можно и без применения d
🐧 Удаление определенных строк из файла в командной строке 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-ю строку из этого файла, я использую:
Это приведет к следующему отображению с удаленной строкой “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
На сегодняшний день услуги системного администратора становятся все более востребованными как у крупных, так и у мелких организаций. Однако важно понять, что это за специалист,…
В мире компьютерных игр Steam, платформа разработанная компанией Valve, является одной из самых популярных и широко используемых. Она предоставляет огромный выбор игр для…
В этой статье вы узнаете, как удалить удаленный Git-репозиторий. Процесс прост, но его полезно запомнить, чтобы избежать неожиданностей в будущем. Git – это…
В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…
Продажа ноутбука нередко становится хлопотным занятием. Кроме поиска покупателя, продавцу необходимо подготовить устройство перед проведением сделки. Но если последовательно выполнить все шаги, ничего…
Удаление строк из файла с использованием sed
Последнее обновление 21.08.2019, 16:09 от пользователя В Unix команда SED удаляет одну или несколько строк из указанного файла по желанию пользователя. Эта утилита используется для работы с командной строкой Unix, для удаления из файла выражений, которые могут быть идентифицированы с помощью определяющего разделителя (например, запятая, табуляция или пробел), по номеру строки или путем поиска строки, выражения или адреса строки в синтаксисе sed.
Sed: удалить одну или несколько строк из файла
Синтаксис
/. /=разделители n = номер строки string = ряд символов, найденный в строке regex = регулярное выражение, соответствующее искомому шаблону addr = адрес строки (номер или шаблон) d = удалить (delete)
Примеры Sed
Вот несколько примеров использования приведенного выше синтаксиса. Используйте следующий код, чтобы удалить третью строку:
sed '/^$/d' filename.txt
sed '/./!d' filename.txt
Удалить строку, соответствующую регулярным выражениям (путем исключения одного из них, содержащего цифровые символы, как минимум 1 цифру, расположенные в конце строки):
sed '/-Start/,/-End/d' filename.txt
Вышеприведенные примеры отображают изменения только при открытии файла (stdout1 = screen). Для постоянных изменений в старых версиях (ниже 4) используйте временный файл для GNU sed с использованием команды -i [suffix]:
Контент нашего сайта создается в сотрудничестве с экспертами в области IT и под руководством основателя CCM.net Жана-Франсуа Пиллу. CCM — ведущий международный сайт о технологиях, доступный на 11 языках.