ГлавнаяОперационные системыLinuxЧто такое SED в Linux и как его использовать?

Что такое SED в Linux и как его использовать?

sed означает s tream ed itor и является часто используемой командой в Linux/Unix. Название происходит от сочетания этих двух слов. Это не текстовый редактор, хотя он изменяет текст. Вместо этого sed получает текстовый ввод как «поток» и редактирует поток в соответствии с вашими инструкциями.

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

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

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

Самый распространенный параметр — подстановка, или s. Простая команда подстановки sedвыглядит примерно так:

sed 's/cat/dog/'

Эта команда прикажет sed сканировать входящий текст и заменять каждый экземпляр строки «cat» на «dog». Для демонстрации мы воспол

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

тобы предоставить sed что-то для работы.

echo cat catapult | sed 's/cat/dog/'

что такое-sed-guide-1

Команда sed состоит из трех основных частей. Во-первых, sedзапускает программу. Затем есть s, который запускает команду замены. Косая черта /является разделителем. Строка после этого будет строкой, которую ищет sed. Строка после второй косой черты будет символами замены, которые sed записывает в поток. Последняя косая черта закрывает команду. В целом это 's/text-to-find/text-to-replace/'.

Обратите внимание на одинарные кавычки в этом примере. Одинарные кавычки позволяют использовать в команде метасимволы. Хотя в большинстве наших примеров кавычки не обязательны, вам следует выработать привычку использовать кавычки для всех команд.

А как насчет частичных строк? Приведенная выше команда будет работать с любым появлением строки «кошка», даже если она является частью другого слова. Например, «катапульта» станет «догапультой», а «катамаран» станет «догамараном».

echo catapult | sed 's/cat/dog/'

что такое-sed-руководство-2

Глобальная замена

В нашем первом примере вы могли заметить, что был заменен только первый экземпляр соответствующей строки. Как и многие утилиты GNU, sed основан на строках. В результате он работает только с первым совпадением в строке. Если у вас есть несколько совпадений для строки-кандидата в строке, будет изменен только первый из них. Чтобы sed работал при каждом вхождении целевой строки, используйте флаг gв конце команды:

sed 's/cat/dog/g'

Это будет работать как в следующем примере:

echo cat catapult catamaran | sed 's/cat/dog/g'

что такое-sed-guide-3

Без глобального флага будет заменен только первый экземпляр слова «cat» в каждой строке.

Настройка входных и выходных файлов

По умолчанию sed будет работать со стандартным вводом. Однако это не слишком полезно. Чтобы запустить sed для файла, укажите имя файла в конце команды, например:

sed 's/cat/dog/g' oldfile.txt > newfile.txt

что такое-sed-guide-4

Это запустит sed для «oldfile.txt» и сохранит вывод команды в «newfile.txt». Если «newfile.txt» не существует, он будет создан командой. Если вы не укажете выходной файл, sed выведет новый текст файла на стандартный ввод.

Если вы хотите перезаписать содержимое файла, вам нужно будет использовать флаг -i. Этот флаг делает изменения «на месте».

sed -i '' 's/ca

Глобальная замена

/pre>

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

Чтобы создать резервную копию файла, добавьте расширение после -i. Это не обязательно должно быть функциональное расширение: «.bu» или «.bak» подойдут. При этом будет создан файл резервной копии с расширением.

sed -i.bak 's/cat/dog' oldfile.txt

При этом создается файл «oldfile.txt.bak», содержащий неотредактированные текстовые данные из исходной версии «oldfile.txt».

Соответствие регулярным выражениям

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

echo "123 abc" | sed 's/[0-9][0-9]*/& &/'

что такое-sed-guide-5

Дальнейшее обучение

sed — чрезвычайно мощная утилита, по своим возможностям схожая с языком сценариев. Чтобы узнать больше о все

Настройка входных и выходных файлов

://www.grymoire.com/Unix/Sed.html#uh-53" target="_blank" rel="noopener" title="Полное руководство Брюса Барнетта по sed">Полное руководство Брюса Барнетта по sed .

Соответствие регулярным выражениям

Дальнейшее обучение

ПОХОЖИЕ СТАТЬИ

Популярные записи