Поиск по сайту:

sed примеры групп захвата


Операции по обработке текстовых файлов играют жизненно важную роль в повседневной жизни пользователя компьютера, поскольку работа с текстом распространена среди пользователей всех профессий. Linux и его дистрибутивы предоставляют множество инструментов и утилит командной строки для доступа к текстовым файлам и управления ими, таких как редактор по умолчанию, vim, nano. Эти инструменты помогают редактировать, удалять, заменять текст внутри текстовых файлов; однако пользователи должны открыть файл с помощью любого из этих редакторов и вручную внести необходимые изменения.

Есть еще один известный редактор, известный как «Stream Editor (sed)»; Утилита командной строки sed Ubuntu обеспечивает обширную поддержку для управления текстовыми файлами; этот инструмент входит в число лучших редакторов из-за расширенных функций, которые он предлагает при работе с текстовыми файлами. Причиной его популярности является однострочная командная операция: это означает, что он может управлять текстовыми файлами с помощью терминала, и пользователям не нужно открывать и редактировать текстовый файл вручную. Группа захвата относится к другой расширенной функции этого инструмента; функция группового захвата sed позволяет пользователю получить определенную часть текстового файла или строки. В этом подробном руководстве мы кратко описали концепцию группировки захвата, ее работу и использование с sed.

Во-первых, мы получим более глубокое представление о группах захвата, а затем приступим к их использованию с помощью sed:

Итак, начнем сегодняшний гайд:

Как работают группы захвата

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

  • Чтобы зафиксировать информацию

  • Манипулировать текстом для конкретного совпадения

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

Как создать группы захвата с помощью команды sed в Ubuntu

Группы захвата в sed формируются путем применения круглых скобок к регулярным выражениям или операции, которую хочет выполнить пользователь. Например, чтобы создать группы захвата, вы должны поместить круглые скобки, такие как «\( » в начале и «\) » в конце определенного регулярного выражения:

Короче говоря, группа захвата используется для захвата определенной части строки, текстового файла, а затем выполнения операции над этой группой:

Следующие примеры демонстрируют использование групп захвата с помощью команды sed; примеры варьируются от базового до продвинутого уровня.

Захват одной группы с помощью команды sed

Написанная ниже команда захватит слово «Hello», а затем заменит слово, идущее после него («sed!»), на «Linuxhint». : Вы могли заметить, что группа захвата заключена в скобки выражения «\( » и «\) ».

$ echo Hello sed! | sed 's/\(Hello\) sed!/\1 Linuxhint/'

Захват нескольких групп с помощью команды sed

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

В эхо-части этой команды помещаются три дистрибутива и родительский Linux, т.е. всего четыре записи: однако в команде sed мы вызвали только 1,2 и 3 группы в обратном порядке. Вывод показывает, что только три группы печатаются в обратном порядке, в то время как «Fedora» сохраняет исходное положение:

$ echo Ubuntu Debian Linux Fedora | sed 's/\(Ubuntu\) \(Debian\) \(Linux\)/\3 \2 \1/'

Захват групп сложных выражений

Допустим, у нас есть выражение, содержащее буквенно-цифровые ключевые слова; мы должны сделать группы, а затем распечатать их в любом (обратном/нормальном) порядке. Приведенная ниже команда показывает, что выражение содержит буквенно-цифровые ключевые слова; мы сделали группы из всех трех буквенно-цифровых слов, а затем отобразили эти слова в обратном порядке:

Примечание. Эту же команду можно использовать, заменив «\w\w*» на «[[:alnum:]_». ]\{1,\} ”:

$ echo Linuxhint 123 capture_groups | sed 's/\(\w\w*\) \(\w\w*\) \(\w\w*\)/\3 \2 \1/'

Приведенная выше команда содержит группы захвата «\(\w\w*\)»; они работают для буквенно-цифровых ключевых слов. Вы можете выполнить приведенную выше команду, используя буквенно-цифровой класс символов в качестве группы захвата. Например, команда, упомянутая ниже, даст тот же результат, когда буквенно-цифровой класс символов используется в качестве группы захвата:

$ echo Linuxhint 123 capture_groups | sed 's/\([[:alnum:]_]\{1,\}\) \([[:alnum:]_]\{1,\}\) \([[:alnum:]_]\{1,\}\)/\3 \2 \1/'

Заключение

Утилита командной строки Sed предоставляет подробное руководство по работе с текстовыми файлами с помощью терминала командной строки; с этим редактором может быть сложно работать, но когда вы углубитесь в детали, вы обнаружите, что его легко понять и применять. Кроме того, его расширенные функции облегчают процесс манипулирования текстовыми файлами и управления ими; как регулярные выражения и групповой захват. В этой статье мы определили концепцию групп захвата в sed; и обеспечил тщательное использование, обратившись к нескольким примерам. Группы захвата весьма полезны, особенно когда у вас есть очень большие текстовые файлы и вы хотите идентифицировать конкретное содержимое этих файлов.

Статьи по данной тематике: