Linux sed несколько шаблонов

Как вы делаете несколько замен Sed

Команда sed (редактор потока) может выполнять различные функции над потоками в UNIX/Linux. Например: поиск, нахождение и замена, вставка/удаление и т.д. Однако в основном он используется для поиска и замены текстов. Команда sed позволяет редактировать файлы, не открывая их. Поскольку это инструмент командной строки, его также можно реализовать в сценариях.

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

Замена текста с помощью Sed

Создание образца текста
Команда sed выполняет определенную задачу в потоке. В демонстрационных целях мы собираемся создать фиктивный файл, который будет служить потоком. Создайте текстовый файл с помощью следующей команды:

кошка test.txt
быстрая коричневая лиса
перепрыгивает через ленивую собаку
EOF

Проверьте содержимое файла с помощью следующей команды:

Замена текста
Для замены текстов общая структура команды выглядит следующим образом:

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

Давайте попробуем это на нашем демонстрационном файле. Выполните следующую команду:

Выполнение множественных замен

В последнем примере мы заменили один шаблон текста. Что делать, если вы хотите заменить несколько шаблонов?

Есть несколько способов сделать это. Мы можем сделать это в рамках одной команды sed или разделить ее на несколько.

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

$ sed -e ‘s/the/hello/g’ -e ‘s/ленивый/усталый/’ test.txt

Читайте также:  Server guide for linux

Здесь первое выражение заменяет «the» на «hello». Второе выражение заменяет «ленивый» на «усталый».

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

$ sed -e s/the/hello/g; s/ленивый/усталый/’ test.txt

Если вы снова и снова запускаете один и тот же набор команд sed, мы можем поместить их в один файл. Мы можем передать файл как источник команд для sed, используя флаг -f. Структура команды выглядит примерно так:

Давайте задействуем его. Мы собрали все команды sed, которые хотим запустить, в файле commands.txt.

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

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

Множественные замены Sed с несколькими командами Sed
Это более простой подход. Вместо того чтобы прибегать к каким-либо хитростям, мы фильтруем поток с помощью команды sed и передаем результат другим командам sed.

Взгляните на следующий пример:

$ sed ‘s/the/hello/g’ test.txt | sed ‘s/ленивый/усталый/’

Здесь первая команда sed заменяет «the» на «hello». Затем вывод передается второй команде sed, которая заменяет «ленивый» на «усталый».

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

Вывод

В этом руководстве мы рассмотрели различные способы выполнения множественных замен с помощью sed. Мы продемонстрировали, как передавать несколько выражений с помощью флага -e. Мы дополнительно сжали несколько выражений в одно выражение, используя точки с запятой. Для более повторяющейся рабочей нагрузки мы также продемонстрировали использование текстового файла для одновременного запуска нескольких выражений sed.

Читайте также:  Войти в рут линукс

Наконец, мы рассмотрели использование sed простым способом: перенаправили вывод одной команды sed в другую.

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

Источник

Bash-скрипты: sed и обработка текстов

В прошлый раз мы говорили о функциях в bash-скриптах, в частности, о том, как вызывать их из командной строки. Наша сегодняшняя тема — весьма полезный инструмент для обработки строковых данных — утилита Linux, которая называется sed. Её часто используют для работы с текстами, имеющими вид лог-файлов, конфигурационных и других файлов.

Если вы, в bash-скриптах, каким-то образом обрабатываете данные, вам не помешает знакомство с инструментами sed и gawk. Тут мы сосредоточимся на sed и на работе с текстами, так как это — очень важный шаг в нашем путешествии по бескрайним просторам разработки bash-скриптов.

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

  • 1 Основы работы с sed
  • 2 Выполнение наборов команд при вызове sed
  • 3 Чтение команд из файла
  • 4 Флаги команды замены
  • 5 Символы-разделители
  • 6 Выбор фрагментов текста для обработки
  • 7 Удаление строк
  • 8 Вставка текста в поток
  • 9 Замена строк
  • 10 Замена символов
  • 11 Вывод номеров строк
  • 12 Чтение данных для вставки из файла
  • 13 Пример

Основы работы с sed

Утилиту sed называют потоковым текстовым редактором. В интерактивных текстовых редакторах, наподобие nano, с текстами работают, используя клавиатуру, редактируя файлы, добавляя, удаляя или изменяя тексты. Sed позволяет редактировать потоки данных, основываясь на заданных разработчиком наборах правил. Вот как выглядит схема вызова этой команды:

По умолчанию sed применяет указанные при вызове правила, выраженные в виде набора команд, к STDIN . Это позволяет передавать данные непосредственно sed.

Читайте также:  Linux get current user group

Вот что получится при выполнении этой команды.

Простой пример вызова sed

В данном случае sed заменяет слово «test» в строке, переданной для обработки, словами «another test». Для оформления правила обработки текста, заключённого в кавычки, используются прямые слэши. В нашем случае применена команда вида s / pattern1 / pattern2 / . Буква «s» — это сокращение слова «substitute», то есть — перед нами команда замены. Sed, выполняя эту команду, просмотрит переданный текст и заменит найденные в нём фрагменты (о том — какие именно, поговорим ниже), соответствующие pattern1 , на pattern2 .

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

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

Источник

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