Использование регулярных выражений с sed
Регулярные выражения позволяют адресоваться к строкам, обрабатываемым sed. Регулярное выражение указывается в косых чертах. Так, например, для вставки строки-разделителя после учетных записей, использующих в качест- ве оболочки bash, с предварительным удалением строк учетных записей пользователей, использующих оболочки, имена которых не заканчиваются на sh, можно задать команду, приведенную в примере 9.15.
Пример 9.15. Регулярные выражения в sed |
$ sed -e '/[^s][^h]$/d' -e '/bash/a \
@@@@@@@@@@@@@@@@@@@@' /etc/passwd root:x:0:0:System Administrator:/root:/bin/bash
@@@@@@@@@@@@@@@@@@@@ bamboo:x:501:100::/home/bamboo:/bin/csh tania:x:502:502::/home/tania:/bin/bash
@@@@@@@@@@@@@@@@@@@@ figus:x:503:503::/home/figus:/bin/bash
@@@@@@@@@@@@@@@@@@@@ user1:x:504:100::/home/user1:/bin/bash
Опция -e команды sed используется для указания того, что дальше в ко- мандной строке будет задан сценарий sed (пример 9.15). Первый сценарий удаляет все строки, не заканчивающиеся на строку sh, а второй добавляет разделительную строку только после строк, заканчивающихся на bash.
Очень удобно использовать sed для замены строк в потоке, адресуясь к стро- кам с помощью регулярных выражений. Например, требуется заменить в по- токе, считанном из /etc/group, вхождения daemon в конце строк на angel (пример 9.16).
Пример 9.16. Замена с помощью регулярных выражений |
$ sed 's/daemon$/angel/' /etc/group
К сожалению, sed работает только с очень ограниченным базовым набором регулярных выражений. Однако при замене подстрок имеется возможность вставлять в подстроку-замену исходную подстроку, удовлетворившую шаб- лону. Так, например, требуется вывести список всех файлов текущего ката- лога с суффиксом .txt так, чтобы к имени файлов была добавлена строка
.bak (пример 9.17).
Пример 9.17. Обращение к найденной строке с помощью & |
$ ls *.txt | sed 's/txt$/&.bak/' dir.txt.bak
distfiles.txt.bak ps.txt.bak
Для обращения к подстроке, удовлетворившей найденному регулярному вы- ражению, в sed используется оператор &.
Дата добавления: 2015-06-12; просмотров: 779;