Настройка и работа в Linux
adb5321d

"Я здесь все мели знаю"


Большинство пользователей просто не представляют себе всех тех возможностей, которыми обладают команды и утилиты Unix, используют лишь малую их толику. Попробуем рассказать, что могут еще дать пользователям знакомые утилиты. (Автор сознательно не приводит полного "разбора" примеров — дабы у читателя появилось желание заглянуть в документацию.)

Сколько раз в день вы вызываете команду grep для поиска? Если вам действительно приходится делать в Unix что-то реальное, это случается по несколько раз в день. Большинство ограничивается самым тривиальным способом: ее использования — grep foo * – вывести все строки со словом foo. Однако у grep куда как больше возможностей, а для вышеуказанного поиска лучше подходит fgrep. Команда позволяет найти все строки с одним из нескольких слов, найти строки с повторами и т.п. Однако, для того чтобы воспользоваться этими возможностями, следует познакомиться с механизмом регулярных выражений. Примеры:

grep (one\|two) files

– найти строки, в которых встречаются цепочки one или two

grep (^[Bb]egin\|^[Ee]nd) files

– найти строки, начинающиеся с Begin, begin, End или end.

Если вас интересует наличие шестисимвольных "полиндромов" из букв, то есть комбинаций вида abccba, можно попробовать поискать их следующим образом:

grep (\([a-zA-z]\)\([a-zA-z]\)\ ([a-zA-Z]\)\3\2\1) files

Увы, это решение не совсем точное. Так, семи- или восьмибуквенная строка с 6 буквами в требуемом порядке будет считаться полиндромом, что, конечно, не так. Попробуйте подправить решение самостоятельно.

Рассмотрим другой вариант повтора. Предположим, нас интересуют строки, в которых некоторая цепочка (one или two) повторяется дважды:

grep (\(one\|two\).*\1) files

Заметим, что строки вида: oneѕtwo и twoѕone не сопоставляются.



Содержание раздела