Главные темы ► linux ► shell ► sed ► Использование sed в Linux
Теги: shell sed

Использование 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'
    Источники
    Последнее изменение: October 7, 2024 15:30


    Редактировать


    test

    2025-12-31 23:09:00 Редактировать

    test

    2025-12-31 23:10:00 Редактировать

    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ
    Loading…
    Loading the web debug toolbar…
    Attempt #