Выражения в квадратных скобках
Правила построения выражений в квадратных скобках не отличаются от BRE.
ERE соответствующие нескольким символам
Следующие правила используются при построении ERE соответствующих нескольким сим-волам:
1. Объединение ERE соответствует объединению последовательностей символов соответствующих каждой компоненте ERE. Объединение ERE заключенное в круглые скобки соответствует тому же, чему и без круглых скобок.
2. Когда за ERE соответствующим одному символу или ERE заключенным в фигурные скобки следует знак +, то такое выражение соответствует одному или большему числу последовательных включений соответствующих данному ERE.
3. Когда за ERE соответствующим одному символу или ERE заключенным в фигурные скобки следует знак *, то такое выражение соответствует нулю или большему числу последовательных включений соответствующих данному ERE.
4. Когда за ERE соответствующим одному символу или ERE заключенным в фигурные скобки следует знак ?, то такое выражение соответствует нулю или одному включению соответствующему данному ERE.
5. Когда за ERE соответствующим одному символу или ERE заключенным в фигурные скобки следует интервальное выражение вида {т}, {т,} или {т,п}, то такое выражение соответствует определенному интервальным выражением числу последовательных включений соответствующих данному ERE.
Альтернативные ERE
Два ERE разделенные символом вертикальной черты (|) соответствуют строке, соответствующей одному из данных ERE.
|
|
Приоритеты ERE
[= =] [: :] [• •] \<special character>
[ ]
( )
* + ? {m,n}
л $
I
Привязки ERE
ERE могут быть привязаны к началу и концу строки. Для привязки используются символы Ли $.
1. Знак л, за пределами выражения в квадратных скобках, привязывает начинающееся с него выражение или подвыражение к началу строки.
2. Знак $, за пределами выражения в квадратных скобках, привязывает заканчивающееся им ERE к концу строки.
Утилита grep
Формат командной строки:
grep [-Ecinlv] [-е шаблоны...] [-f файл_шаблонов ]... файл...
Производит поиск в указанных файлах или во входном потоке, отбирая строки в которых имеется соответствие одному или более из указанных шаблонов. Аргумент шаблоны является списком регулярных выражений разделенных символами новой строки. Аргумент файл_шаблонов определяет файл содержащий список шаблонов. Значения прочих параметров следующие:
-E использовать расширенные регулярные выражения
-c вывести только количество строк удовлетворяющих условию
-i не различать регистр символов
-n предварить каждую выводимую строку ее номером в файле
-l вывести только имена файлов содержащих строки удовлетворяющие условию
|
|
-v вывести строки не удовлетворяющие ни одному из шаблонов
Потоковый редактор sed
Формат командной строки:
sed [-n] сценарий [ файл ...]
sed [-n] [-e сценарий ]... [ -f файл_сценария ]... [ файл ...]
Sed — потоковый редактор считывающий строки из текстовых файлов или со стандартного ввода, изменяющий их, в зависимости от команд редактирования указанных в параметре сценарий или в файле файл_сценария и выводящий результат на стандартный вывод. Ключ -n подавляет вывод всех строк файла (производимый по умолчанию). Каждый сценарий (параметр сценарий) состоит из команд редактирования (по одной в строке) следующего вида:
[адрес![,адрес3]]команда[аргументы]
допускаются пробельные символы перед первым адресом и перед командой. В нормальном режиме sed циклически копирует входную строку в рабочую область (в случае, если там ничего не осталось от предыдущей команды), применяет к ней последовательно все команды сценария, чьи адресные выражения содержат данную строку, выводит результат на стандартный вывод (если не указан ключ -n) и очищает рабочую область. Некоторые команды используют область сохранения, чтобы запомнить всю рабочую область или ее часть для последующего использования. Рабочая область и область сохранения способны хранить не менее 8192 байт. Адрес либо пустое поле, либо десятичное число, означающее номер входной строки, либо знак доллара ($ ), соответствующий последней строке, либо контекстный адрес (который состоит из регулярного выражения предваренного и заканчивающегося некоторым ограничителем, обычно косой чертой. Командная строка не содержащая адреса применяется к каждой строке. Командная строка содержащая один адрес применяется к каждой строке соответствующей адресу. Командная строка содержащая два адреса применяется ко всем строкам начиная с соответствущей первому адресу и заканчивая соответствующей второму. Начиная с первой строки, следующей за указанным диапазоном sed снова проверяет строки на соответствие первому адресу и, в случае нахождения соответствия, процесс повторяется.
|
|
Команды могут применяться к строкам не входящим в диапазон при помощи команды отрицания !.
Sed поддерживает базовые регулярные выражения со следующими дополнениями:
• В контекстных адресах, конструкция cREc, где c любой символ, отличный от обратной косой черты и символа новой строки, идентична /RE/.
Последовательность \n соответствует символу новой строки.
|
|
В следующем списке команд, максимальное число адресов для команды определено последовательностями [0addr], [1addr] и [2addr]. Аргумент text состоит из одной или более строк. Каждый символ новой строки должен быть предварен обратной косой чертой. Прочие символы новой строки удаляются.
[2addr]command-list
Выполнять command-list, для указанных строк.
[1addr]a\text
Вывести текст перед обработкой указанной строки.
[2addr]b [метка]
Перейти к команде :, содержащей указанную метку. Если метка пуста, перейти в конец сценария.
[2addr ]c\text
Удалить рабочую область. При пустом или одном адресе или в конце двухадресного диапазона вывести текст.
[2addr]d
Удалить рабочую область.
[2addr]D
Удалить начало рабочей области, до первого перевода строки включительно.
[2addr]g
Заменить содержимое рабочей области содержимым области сохранения.
[2addr]G
Добавить к содержимому рабочей области символ новой строки с последующим содержимым области сохранения.
[2addr]h
Заменить содержимое области сохранения содержимым рабочей области.
[2addr]H
Добавить к содержимому области сохранения содержимое рабочей области.
[1addr]i\text
Вывести текст.
[2addr]l
Вывести содержимое рабочей области, заменяя символы табуляции, перевода строки, обратной косой черты и т.п. на пары символов \,\a ,\b ,\f ,\r ,\t ,\v. Прочие непечатные символы заменяются трехзначными восьмеричными числами предваренными обратной косой чертой.
[2addr]n
Вывести содержимое рабочей области на стандартный вывод и считать в рабочую область следующую входную строку.
[2addr]N
Добавить к содержимому рабочей области следующую входную строку. При этом изменяется текущий номер строки.
[2addr]p
Вывести рабочую область на стандартный вывод.
[2addr]P
Вывести начало рабочей области, до первого символа новой строки на стандартный вывод.
[1addr]q
Перейти в конец сценария и выйти.
[2addr]r rfile
Скопировать содержимое файла rfile на стандартный вывод до обработки следующей входной строки.
[2addr]s/reg-exp/replacement/flags
Подставить replacement вместо подстрок рабочей области, соответствующих регулярному выражению reg-exp. Вместо косой черты можно использовать любой другой символ. Символ амперсенда & в replacement будет заменен строкой, соответствующей регулярному выражению. Символы \n, где n цифра, будут заменены соответствующей обратной ссылкой. Могут использоваться следующие флаги:
n Заменять n-ое вхождение регулярного выражения.
g Заменить все вхождения регулярного выражения.
p Выводить содержимое рабочей области если произведена замена.
w wfile
Добавить содержимое рабочей области в файл wfile если произведена замена.
[2addr]t [label]
Перейти к команде :, содержащей метку label, если с момента последнего чтения входной строки или последнего выполнения команды t в буфере выполнялись подстановки. Если метка опущена, перейти в конец сценария.
[2addr]w wfile
Добавить содержимое рабочей области к файлу wfile.
[2addr]x
Обменять содержимое рабочей области и области сохранения.
[2addr]y/string1/string2/
Заменить все включения символов содержащихся в строке string1 соответствующими символами строки string2. Строка string1 не должна содержать повторяющиеся символы, длины строк должны совпадать.
[2addr]!command
Применить команду только к тем строкам, которые не принадлежат указанным адресам.
[0addr]: label
Команда ничего не делает. Содержит метку, на которую можно перейти командами b и t.
[1addr]=
Выводит номер текущей строки.
[0addr]
Пустая команда.
[0addr]#
Символ # и остальные, до конца строки, игнорируются (комментарий).
Практическое задание
1. Скопируйте в домашний каталог файл /home/labs/text.txt
2. Выведите в файл отчета все строки файла text.txt содержащие слово "Благозвон". Добавьте к файлу отчета количество найденных строк.
3. Добавьте к файлу отчета все строки файла text.txt, которые начинаются с буквы "Б" (возможно после нескольких пробелов).
4. Добавьте к файлу отчета все непустые строки файла text.txt, не содержащие русскую букву "а" (в любом регистре).
5. Добавьте в файл отчета имена файлов каталога /home/labs, которые содержат слово "include".
6. Используя редактор sed замените в файле text.txt все слова Снарк на СНАРК. Результат сохраните в файле snark.txt.
7. Проанализируйте сценарий /home/labs/sed1.sh и формат файла /home/labs/rfc-index.txt. Запустите сценарий несколько раз указывая в качестве аргумента целое число от 1 до 3000.
8. При помощи sed выведите из файла /etc/passwd идентификаторы пользователей и их имена, разделенные символом табуляции, в формате:
0 root
1 daemon
2 operator ...
Вывод должен быть отсортирован по идентификатору пользователя. Результат добавьте к файлу отчета.
9. Напишите сценарий для sed, который будет менять местами каждые две строки файла.
Возможно sed прийдется запускать с ключом -n.
10. Если Вам не удалось выполнить предыдущее задание, обратите внимание на файл /home/labs/rev.sed.
11. Напишите сценарий для редактора sed, который будет добавлять:
(a) В начало файла строку "<html><body>".
(b) В начало всех строк начинающихся словом "Приступ" строку "<H2>", а в конец строку "</H2>".
(c) В конец всех остальных строк "<br>".
(d) К концу последней строки "</body></html>"
Результат работы сценария сохраните в файле snark.html в каталоге public_html домашнего каталога (каталог потребуется создать). Сценарий сохраните под именем sed1 в домашнем каталоге.
Лабораторная работа № 10 Использование пакета OpenSSH
Генерация RSA ключа
Для генерации ключа используется утилита ssh-keygen. По умолчанию утилита генерирует RSA ключ. При указании аргумента -d генерируется DSA ключ. Секретный ключ защищается паролем и сохраняется в файле .ssh/identity, открытый ключ сохраняется в файле .ssh/identity.pub. Открытый ключ необходимо, затем, скопировать в файл .ssh/authorized_keys в домашнем каталоге пользователя на удаленной машине (т.е. на той машине, на которую пользователь собирается заходить с других компьютеров).
Задание | 1: Сген | ерируйте RSA | ключ, скопируйте | файл | .ssh/ | identi | ty | .pub | в | файл | |
.ssh/authorized | _keys (Поскольку у Вас | один и тот же домашний | каталог | на | всех | машинах, | |||||
то данная | операция | аналогична копированию | файла на | удален | ную машину). | ||||||
Вход на удаленную машину
Для того, чтобы зайти на удаленную машину, т.е. запустить на ней командный интерпретатор, используется команда ssh. В простейшем виде команда имеет следующий синтаксис:
ssh [-l имя_пользователя] [хост|пользоатель@хост] [команда]
Если имя пользователя не указано, то используется имя пользователя запустившего программу ssh. Если не указана команда, то запускается командный интерпретатор пользователя, указанный в файле /etc/passwd.
Задание 2:Зайдите на любую другую машину при помощи команды ssh.
Использование ssh-agent
Программа ssh каждый раз запрашивает пароль пользователя, которым защищен секретный ключ. Для того, чтобы пароль не запрашивался постоянно, а сохранялся в памяти для последующего использования, служит программа ssh-agent. Программа создает локальный сокет UNIX и сообщает его другим приложениям при помощи переменных окружения. Режим доступа к сокету устанавливается таким образом, что чтение данных из сокета может производить только создавший его пользователь1. Синтаксис программы:
ssh-agent [-k] [комада]
Программа создает сокет, устанавливает переменные окружения и порождает процесс определенный командой. Этот процесс и его дочерние процессы наследуют переменные окружения указывающие на созданный сокет и на номер процесса ssh-agent. Для использования ssh-agent в текущем процессе можно выполнить команду:
eval ‘ssh-agent‘
Ключ -k используется для завершения программы ssh-agent.
Для добавления ключей в хранилище ssh-agent используется команда ssh-add:
ssh-add [-ld] [file...]
Команда читает указанный файл, содержащий секретный ключ пользователя, запрашивает у пользователя пароль к ключу и передает ключ программе ssh-agent. Если файл ключа не указан, то программа использует файл .ssh/identity. Если в командной строке указан
________________________________________
1Данное ограничение не действует на пользователя root
аргумент -l, то команда ssh-add выводит список ключей. Если указан аргумент -d, то команда удаляет ключ из хранилища ssh-agent.
Задание 3:Запустите программу ssh-agent при помощи команды eval ‘ssh-agent‘, добавьте в хранилище свой ключ. Зайдите при помощи программы ssh на другой компьютер.
Удаленный запуск программ
При запуске программы на другом компьютере программа ssh перенаправляет стандартные ввод и вывод программы на локальный компьютер. Это делает возможным включение команд запускаемых на удаленной машине в конвейеры выполняемые на локальной машине. Например:
ssh it-1 cat /var/log/messages | grep sshd | \ ssh cat >/tmp/ttt
Задание 4:Выполните команду ls /etc на компьютере nix, отсортируйте результат на любом другом компьютере и сохраните результат в файле отчета.
Дата добавления: 2018-04-05; просмотров: 318; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!