- •Лабораторная работа №2 Фильтры и регулярные выражения
- •Команда cat
- •Команда tee
- •Команда wc
- •Команда spell
- •Команда sort
- •Команда cut
- •Комада diff
- •Команда grep и fgrep.
- •- I игнорирует регистр - с выводит только число соответствующее колличеству строк с заданным образцом
- •Регулярные выражения
- •Задания к лабораторной работе.
Регулярные выражения
Назначение:Регулярные выражения позволяют задавать возможные варианты образца, а также образцы, расположенные в различных местах текста. Можно искать в тексте образцы, имеющие разные начальные и конечные буквы, а также указывать на текст, стоящий в наЁчале или в конце строки. К специальным символам регулярных выражений относятся
^,$,*, .и[ ]. Знаки^и$ обозначают начало и конец строки. Звездочка соответствует повторяющимся символам, точка – одиночным символам, а квадратные скобки – группам символов.
Примеры:
Для того чтобы обазначить образец, стоящий в начале строки, необходимо непосредственно перед образцом поставить знак ^. Он делает начало строки частью искомого образца.
^consistens
consistensofastream
Для образца стоящего в конце строки:
such$
be used to create such
Точка – это специальный символ, который обозначает один какой-либо символ. Так по образцу b.d будут найдены комбинации , состоящие из трех букв. Первой будет буква b, третьей d, а второй любая буква. Если указать простоb., безd, то будут найдены все комбинации, начинающиеся с буквыbи состоящие минимум из одного символа.
Специальный символ * обозначает несколько ( ноль и более) следующих друг за другом экземпляров обозначенного им символа. Этот символ ставиться в образце перед звездочкой. Звездочку можно рассматривать как оператор, который в качестве операнда берет стоящий перед ним символ. Этот специальный символ обеспечивает поиск повторяющихся экземпляров заданного символа. Т. е. если задать с*, то будут найдены : с сс ссс ссс и т.д.
Образец .*совпадает с любым символом в строке. Практически это обозначает всю строку целиком. Если у вас есть контекст для.*, то можно обозначат различные сегменты строки. Образец поставленный перед специальными символами.*указывает на часть строки, начиная с экземпляра образца. Образец, поставленный перед этими специальными символами, обозначает начало строки до него. Символы.*, стоящие между образцами, указывают на весь промежуточный текст, находящийся в строке между этими образцами.
Если нужно найти не определенный символ и не любой символ, а некоторую группу символов, то используются квадратные скобки. Эти специальные символы служат для обозначения группы возможных символов. Символы этой группы заключаются в квадратные скобки и перечисляются один за другим. Символы , совпадающие с перечисленными в этой группе считаются найдеными.
doc[agN]
list of documents совпадения нет
docadocb
docg docNdocP
week[245]
week2weather
reports on week4
week1 reports совпадения нет
Задания к лабораторной работе.
Создайте текстовые файлы N1иN2. С помощью фильтров скопируйте содержимое файловN1иN2в один выходной поток. И сохраните выходные данные в файлеN3. Проверьте правильность написания слов в файлеN3и перенаправьте сообщения об ошибках в файлN4.error.
Выведите на экран все строки файла N3, содержащие слово «а». Сохраните вывод в файлеgrepped. Используя фильтры, выведите количество строк и символов этого файла , затем отсортируйте его таким образом, чтобы не было разделения текста на абзацы и сохраните выходную информацию в файлеN4. Сравните файлN3с файломN4(фильтром).
Создайте текстовый файл. Выведите строку в которой содержиться текст
а.) в конце стороки, состоящий из слова weekи еще одного символа
б.) между символами aиb
в.) отличный от цифр, стоящий в начале строки и начинающийся на с
