Sed заменить новую строку пробелом

Sed Zamenit Novuu Stroku Probelom



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

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

Использование sed для замены текста

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







$ sed -e 's///'

Взгляните на следующую команду:



$ echo 'быстрая коричневая лиса' | sed -e 's/быстро/быстро/g'



Команда echo печатает строку в STDOUT . Затем поток STDOUT трубчатый сед. Мы проинструктировали sed заменить любой экземпляр quick на fast. Наконец, вывод выводится на экран.





Замена новых строк пробелом

Для демонстрации я создал следующий текстовый файл test.txt с несколькими фиктивными данными:

$ кошка test.txt



Команда sed принимает регулярные выражения для описания различных шаблонов. Используя эту функцию, мы собираемся описать новую строку как \n. Давайте попробуем заменить символы новой строки пробелами:

$ sed -e 's/\n/ /g' test.txt

Однако это не сработало, как ожидалось. Для достижения этой цели нам потребуются некоторые дополнительные опции. Взгляните на следующую команду:

$ sed -e ':a;N;$!ba;s/\n/ /g' test.txt

Команда sed состоит из нескольких разделов; каждый обозначает конкретную задачу:

  • :a: Создает метку ‘a’
  • N: Добавляет следующую строку в пространство шаблона.
  • $!ba: если не последняя строка, возвращается к метке «a»
  • s/\n/ /g: находит и заменяет новую строку (\n) пробелом (/ /). Шаблон сопоставляется глобально (/g)

Команда sed повторяет шаги, пока не дойдет до последней строки, заменяя все символы \n пробелами.

Вместо этой сложной команды мы можем упростить ситуацию, используя флаг -z, который указывает sed для работы с записями, разделенными нулями. Команда будет выглядеть так:

$ sed -z -e 's/\n/ /g' test.txt

Альтернативные методы

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

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

$ тр '\n' ' ' < test.txt

Мы также можем использовать Perl для выполнения этой работы. Следующий синтаксис также похож на тот, что мы использовали с sed (но упрощенный):

$ perl -p -e 's/\n/ /' test.txt

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

$ вставить -s -d '' test.txt

Подобно sed, Linux поставляется с другим инструментом awk. Подобно sed, он также может выполнять некоторые расширенные замены на входе. Для нашей цели используйте следующую команду awk:

$ awk 1 ORS=' ' test.txt

Вывод

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

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