sed & awk / sed & awk: 3.1 Выражение

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Вы возможно знакомы с некоторыми выражениями, которые интерпретирует калькулятор. Посмотрим на следующее арифметическое выражение:

r0mk 12.10.12 в 10:49

0

2 + 4

r0mk 12.10.12 в 10:49

0

"Два плюс четыре" содержит несколько констант или буквенных значений и оператор. Программа калькулятор должна распознать, для примера, что "2" это числовая константа и знак плюс является оператором, и не будет обработа как символ "+".

r0mk 15.10.12 в 07:24

0

Выражение говорит компьютеру, как вывести результат. Хотя результат "два плюс четыре" который мы хотим получить, мы не просто говорим компьютеру вывести шесть. Мы даем компьютеру инструкции для обработки выражения в возврата значения.

r0mk 15.10.12 в 07:28

0

Выражение может быть сложнее, чем "2 + 4"; фактически, оно может состоять из множества простых выражений, как следующее:

r0mk 15.10.12 в 07:29

0

2 + 3 * 4

r0mk 12.10.12 в 10:49

0

Кальлутор, обычно, обрабатывает выражение с лева на право. Однако, конткретные операторы имеют приоритет перед другими: и обрабатываются первыми. Таким образом, показанное выше выражение вернет 14, а не 20, помтому, что умножение имеет приоритет. Приоритет может быть перезаписан, помещением простого выражения в скобки. Таким образом "(2 + 3) * 4" или "сумма вдух и трех, умноженная на четыре" вернет 20. Скобки, это символы, которые объясняют калькулятору изменить порядок в котором значения поступают.

r0mk 15.10.12 в 09:53

0

Регулярное выражение описывает шаблон или последовательность символом. Объединение является базовой операцией, подразумеваемой в каждом выражениее. Тоесть шаблон соответствует соседним символам. Рассмотрим следующее регулярное выражение:

r0mk 15.10.12 в 13:04

0

ABE

r0mk 15.10.12 в 13:05

0

Каждая буква является регуляным выражением, которое удовлетворяет только одному символу. Это выражение читается "После А следует В, затем следует Е" или просто "строка АВЕ". Термин "строка" означает каждый символ объединенный с предшествующим. Это регулярное выражение описывает последовательсть не может быть подчеркнута. ( Новички склонны думать о высокоуровневых единицах, а не в отдельных символах.) Регулярное выражение чувствительно к регистру; "А" не значие "а".

r0mk 15.10.12 в 13:10

0

[1] Некоторые другие программы, которые используют регулярные выражения, предлагают опции чувствительные к регистру, в отличии от sed и awk

r0mk 18.10.12 в 07:48

0

Программы, такие как grep, понимают регулярные выжадения и проверяют синтаксис регулярных выражений для обработки шаблон. Они читают вход построчно в поисках шаблона. Входные строки символьные и для проверки соответствию шаблону, программа сравнивает первый символ в строке с первыми символом в шаблоне. Если он совпадает, она сравнивает второй символ в строке со вторым символом из шаблона. Когда проверка проваливается, она возвращается и пробует снова, начиная со следующего символа в строку. Рисунок 3.1 показывает этот процесс, пробуя найти шаблон "abe" в входной строке.

r0mk 18.10.12 в 07:54

0

Регулярное выражение не ограничивается буквенными символами. Вот, например, спецсимвол точка (.) - который может быть использован в качестве подстановочного для совпадения любому одиночному символу. Таким обрзаом, мы можем указать регулярное выражение "А.Е" и оно будет удовлетворять "ACE," "ABE", и "ALE". Он будет удовлетворять любому символу идущему после "А".

r0mk 18.10.12 в 09:44

0

Спецсимвол *, звездочка, используется для подставновки нуля или более вхождений предыдущего символа регулярного выражения, который обычно одиночный символ. Вы можете быть с знакомы с *, как спецсимволом шелл, где он означает "ноль или более символов". Но это значение очень отличается от * в регулярном выражении. Сам по себе спецсимвол звездочка незначит ничего; он изменяет то, что было перд ним. регулярное выражение .* удовлетворяет любому числу или символу, в то время как в шелле, * означает этоже. (Для примера, в шелле ls * покажает список всех файлов в текущей директории.) Регулярное выражение "А.*Е" удовлетворяет любой строке, которая удовлетворяет "А.Е", но также любом удовлетворяет любому символу или числу между "А" и "Е": "AIRPLANE," "A FINE," "AFFABLE," или "A LONG WAY HOME,", для примера. Запомните, что "любой символ или число" может быть нулевым!

r0mk 18.10.12 в 10:10

0

Если Вы понимаете разницу между "." и "*" в регулярных выражения, Вы уже знаете о двух основных типах спецсимволом: те, которые могут быть распознаны как отдельный символ и те. которые изменяют обработку символов уже распознанных.

r0mk 18.10.12 в 10:12

0

Это также должно быть очевидно, что с помощью спецсимволов Вы можете расширить или сократить возможные совпадения. Вы имеетен больший контроль над тем что совпадает, а что нет.

r0mk 18.10.12 в 10:14

0

Figure 3.1: Понимание регулряных выражений

r0mk 18.10.12 в 10:14

0
Минутку...