Галерея диаграмм связей Сокращение команды Sed
Это интеллектуальная карта сокращений команд Sed, включая введение и синтаксис, параметры, команды, наборы метасимволов и т. д. Надеюсь, это будет вам полезно!
Отредактировано в 2023-11-23 12:09:46Сокращение команды Sed
Введение и грамматика
Описание: Stream editor - Потоковый редактор, выполняет фильтрацию текста и форматированную замену вывода; sed имеет два встроенных хранилища: 1). Пространство шаблонов очищается после выполнения команды. 2). По умолчанию удерживаемое пространство не очищается.
Формат команды: sed [options] -f scriptfile files #Поддержка нескольких файлов sed [опции] '[диапазон адресов | диапазон шаблонов] s#{заменяемая строка}#{заменяемая строка}#{флаг замены}' [входной файл]
Несколько выражений: sed 'expression' | sed 'expression' #Эквивалент следующего оператора sed sed 'выражение';
параметры
-i: напрямую изменить содержимое файла, из которого считываются данные, а не выводить их с помощью Screen (непосредственно добавить или создать резервную копию исходного файла).
-r: поддерживает расширенные выражения. Нет необходимости использовать \() для escape() в sed.
-f <файл сценария> или --file=<файл сценария>: #Обработать входной текстовый файл с помощью файла сценария, указанного в параметре.
-n или --quiet или --silent: #Отменить вывод по умолчанию, отображать результаты только после обработки сценария и выводить их на экран;
-e <script> или --expression=<script>: #Используйте сценарий, указанный в опции, для обработки входного текстового файла и выполнения нескольких команд sed.
команда [команда]
Добавить операцию
Добавить текст на следующую строку текущей строки я вставляю текст в текущую строку
Удаление операции
d удалить выбранные строки D Удалить первую строку блока шаблона
Изменить операцию
s заменяет указанный символ. Обычно используется с регулярными выражениями, разделитель можно настроить. c Измените выбранную строку на новый текст
Проверка работы
n прочитать следующую строку ввода и обработать новую строку следующей командой вместо первой команды N Добавляет следующую строку ввода после блока шаблона и вставляет между ними новую строку, изменяя текущий номер строки.
p печатает строки блока шаблона
Сохранение файла и чтение
w файл записывает и добавляет блок шаблона в конец файла Файл W записывает и добавляет первую строку блока шаблона в конец файла.
r файл читает строки из файла
Номер строки и обратный сбор
= вывести текущий номер строки
! Указывает, что следующие команды будут применены ко всем невыделенным строкам.
флаг замены
Определите, какой символ начать обработку, цифровая метка 1–512.
я игнорирую регистр для замены/сопоставления/нахождения
г означает полную замену в пределах линейки
p означает строку печати, часто используется с -n
Преобразование регистра: \l \L \u \U т.е. нижний/верхний
y: преобразовать совпавшую строку в верхний и нижний регистр, независимо от того, добавлен ли g или нет.
e флаг выполнения команды, выполнение любого содержимого в пространстве шаблонов как команда bash (обратите внимание на пробелы)
Обычное сопоставление использует: тег сопоставления подстроки \1 и тег сопоставленной строки.
w означает запись строк в файл. x означает замену текста в блоке шаблона текстом в буфере.
набор метасимволов
Примечание. В sed нет метасимволов \d \w, обозначающих цифры и буквы, есть только следующие метасимволы.
^ соответствует началу строки, например: /^sed/ соответствует всем строкам, начинающимся с sed. $ соответствует концу строки, например: /sed$/ соответствует всем строкам, заканчивающимся на sed. . Соответствует любому символу, не являющемуся символом новой строки, например: /s.d/ соответствует s, за которым следует любой символ, и, наконец, d. * Соответствует 0 или более символов, например: /*sed/ Соответствует всем строкам, шаблон которых состоит из одного или нескольких пробелов, за которыми следует sed. [] соответствует символам в указанном диапазоне, например /[ss]ed/ соответствует sed и Sed. [^] соответствует символу, который не находится в указанном диапазоне, например: /[^A-RT-Z]ed/ соответствует строке, начинающейся с буквы, которая не содержит A-R и T-Z, за которой следует ed. \(..\) соответствует подстрокам и сохраняет совпадающие символы, например s/\(love\)able/\1rs, loveable заменяется любовниками. & сохраняет символы поиска для замены других символов, например s/love/**&**/, любовь становится **love**. \< соответствует началу слова, например:/\<love/ соответствует строкам, содержащим слова, начинающиеся с любви. \> Соответствует концу слова, например /love\>/ Соответствует строкам, содержащим слова, оканчивающиеся на любовь. x\{m\} повторяет символ x, m раз, например: /0\{5\}/ соответствует строкам, содержащим 5 нулей. x\{m,\} повторяет символ x не менее m раз, например: /0\{5,\}/ соответствует строкам, содержащим как минимум 5 нулей. x\{m,n\} повторяет символ
Классический пример
Удалить команду d
sed -ri '3d' file //Удалить третью строку в файле file
sed -ri '/root/d' file //Удаляем строки, содержащие root, соответствующий регулярному выражению
sed -ri '/root/,5d' file //Удаляем содержимое, начиная с обычной совпадающей строки, содержащей корень, до строки 5
sed -ri '/root/, 5d' file //Удаляем содержимое, начиная со строки, содержащей корень, соответствующий регулярному выражению, и добавляем 5 строк
sed -ri '/root/,!d' file //Удалить строки, отличные от строки, содержащей корень, соответствующий регулярному выражению
Заменить команду s
sed -ri 's/root/alice/' passwd //Заменяем первый корень в файле passwd на alice
sed -ri 's/root/alice/g' passwd //Заменяем весь root в файле passwd на alice
Команда чтения файла r
sed -r '/root/r /etc/hosts' passwd //После сопоставления корневой строки в файле passwd прочитайте файл /etc/hosts
Команда записи файла w
Добавить команду
Добавляет строку a после указанной строки
sed -r '2a я люблю тебя' passwd //Вставьте строку «Я люблю тебя» после второй строки файла passwd
Вставьте строку i перед указанной строкой
sed -r '2i i love you' passwd //Вставьте строку «Я люблю тебя» перед второй строкой файла passwd
Изменить команду c
sed -r '3c\Мне это нравится! ' passwd //Замените третью строку на «Мне нравится!»
sed -r '/daemon:/c\Мне это нравится! ' passwd //Находим обычную соответствующую строку и заменяем ее на «Мне нравится!»
Получить следующую команду n
Отмените этот вариант!
Дополнительные знания
l (строчная l) печатает и отображает специальные символы (конец строки и знак табуляции).
Специальные символы {} Команды, заключенные в {}, выполняются по порядку, а предыдущие команды влияют на последующие команды.
СЭД-скрипты
Одно выражение sed на строку