Cruiser78 пишет:Увы, но я, наверное, сильно старый. Никак не могу вложить в свою голову даже основ регулярных выражений. Сознание ни за что не зацепляется.
я тоже не молод. дело не в этом - такое конечно не распарсить без подготовки, тут в одну кучу свалено то, что написано в довольно длинном посте, причём что sed, что регулярки - очень лаконичные.
А цепляться нужно вот за что: regex == специализированный язык программирования, предназначенный для краткой записи алгоритмов поиска и работы с текстом. Между прочим, это компилируемый ЯП, т.е. регулярное выражение сначала собирается (компилируется), а затем оно собственно выполняется. Кроме того, его можно считать "математической формулой", что в общем-то и является алгоритмом.
В данном случае связь с математикой очень сильна - сохранить флешку очень просто. Достаточно выполнить команду dd. вопрос - откуда, и куда копировать. Мы первым делом анализируем состояние всех файлов (lsof), и ищем среди них нужный. А на основе этой информации мы строим команду. Причём построение дальнейшего алгоритма тоже происходит по своему алгоритму, который читается как на Руси - слева-направо:
^$BR нам необходимо, что-бы в начале строки (^) было некое $BR (это название браузера)
\s+ продолжаем разбор: далее должны идти 1 или более пробельных символов (вообще-то там пробелы, но кто его знает? может завтра будут табуляции)
([0-9]+) просматриваем далее - должна быть 1 или более цифр. При этом, все эти цифры мы сохраняем во временную переменную №1, о чём говорят (скобки)
\s+ ещё несколько пробелов
\w+ ещё несколько букв-цифр-подчерков
\s+ ещё несколько пробелов
([0-9]+) смотрим дальше: опять несколько цифр, и мы их сохраняем в переменную №2
u потом буква 'u'
\s+ несколько пробелов
.* любой символ сколько угодно раз. Это середина строки, она нам не интересна
/tmp/(Flash\w+) потом идёт имя файла. оно всегда в /tmp/ и всегда начинается на Flesh, и всегда потом идут несколько букво-цифро-подчерков
\s+ потом идёт несколько пробелов
\(deleted\) потом (delete), при этом скобки пришлось заэкранировать, ибо просто скобки () - нужны для сохранения переменных.
$ это конец строки.
Всё это вместе проверяется последовательно, и если хоть одно УСЛОВИЕ не выполнено, мы переходим к анализу сл. строки. Если все условия выполнены, мы составляем команду dd, подставляя в неё найденные 3 переменные.
Затем эта команда выполняется. Ничего сложного
Это не сложнее формулы Кардана для решения уравнений третьей степени
Даже попроще...
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)