Использование sed в Linux

Конспект в доработке

    Команда sed

    Синтаксис:
    sed опции -e команды файл


    У команды есть два буфера, активный буфер шаблона и дополнительный
    Утилита sed помещает каждую строку в буфер шаблона, затем над ней выполняются заданные действия если строка попадает под определенные условия
    Затем строка исправленная или в исходном виде выводится в стандартный поток вывода
    Строка удаляется из активного буфера и копируется в дополнительный буфер уступая место для обработки новой строки, т.е. пока обрабатывается новая строка, старая строка может использоваться в текущей итерации

    Регулярные выражения

    i* - любой символ, любое количество;
    \+ - как звездочка, только один символ или больше;
    \? - нет или один символ;
    \{i\} - любой символ в количестве i;
    \{i,j\} - любой символ в количестве от i до j;
    \{i,\} - любой символ в количестве от i и больше

    #Удалить строку, которая начинается на vmail cat copypasswd | sed '/^vmail/d'
    Команды sed

    Утилите можно передать несколько команд через точку с запятой, либо использовать две опции -e

    # - комментарий, не выполняется;
    q - завершает работу сценария;
    d - удаляет буфер шаблона и запускает следующую итерацию цикла;
    p - вывести содержимое буфера шаблона;
    n - вывести содержимое буфера шаблона и прочитать в него следующую строку;
    s/что_заменять/на_что_заменять/опции - замена символов, поддерживаются регулярные выражения;
    y/символы/символы - позволяет заменить символы из первой части на соответствующие символы из второй части;
    w - записать содержимое буфера шаблона в файл;
    N - добавить перевод строки к буферу шаблона;
    D - если буфер шаблона не содержит новую строку, удалить его содержимое и начать новую итерацию цикла, иначе удалить содержимое буфера до символа перевода строки и начать новую итерацию цикла с тем, что останется;
    g - заменить содержимое буфера шаблона, содержимым дополнительного буфера;
    G - добавить новую строку к содержимому буфера шаблона, затем добавить туда же содержимое дополнительного буфера.

    #Не выводить содержимое буфера в конце каждой итерации, но сделать вывод только строк с 1 по 5 cat copypasswd | sed -n '1,5p' #Утилите можно передать несколько команд через точку с запятой, либо использовать две опции -e #-f использовать команды из файла cat copypasswd | sed -f sed.test #Удалить ( исключить обработку указанных строк ) указанные строки из буфера и запустить следующую итерацию cat copypasswd | sed '1,30d' #Замена содержимого для строк 1,2,3 cat copypasswd | sed '1,3 s/bin/sbin/g'
    Источники
    Последнее изменение: 07.10.2024 15:30


    Связанные темы

    Команда exec linux

    Использование команды tee в Linux

    Язык shell в Linux

    Библиотеки Linux

    Использование md5sum

    Использование wget и curl в Linux

    Команда chattr и lsattr в Linux

    Использование awk Linux Alpine

    Применение getopt в Linux

    Переменные окружения в Linux

    Блокировка пользователя в Linux

    Классы символов в Linux

    Использование tar в Linux

    Подстановка имен файлов

    Проверка на необходимость перезапуска после обновления пакетов

    Стандартные потоки и перенаправление ввода/вывода в Linux

    Функции в языке Shell

    Использование grep в Linux

    Архивирование и сжатие файлов в Linux

    Использование find Linux

    Права пользователей и групп

    Полезные команды и скрипты Linux

    Переменные в Linux

    Условная конструкция if в Linux

    Использование grep в Linux

    Использование xargs в Linux

    Фигурные скобки в bash

    Циклы в языке shell

    Использование оператора select в языке shell

    Внутренние и внешние команды linux

    Использование конструкции case в Linux

    Подстановка команд в Linux

    Мониторинг системы Linix с помощью getconf

    Использование ANCI последовательностей в Linux

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

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ