Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Для файла имеющего структуру, изображенную на рисунке, постройте регулярное выражение, фильтрующее строки, в которых имя сотрудника начинается на букву "R"



Само решение будет выглядеть следующим образом:

^[0-9]\{1,4\} R

Ниже приведен пример с несколькими вариантами решений, по образцу которого можно описать решить поставленной задачи.

В файле query1 выбрать все строки, в которых зарплата составляет целое число тысяч.

Решение 1:

  1. Согласно структуре файла, столбец зарплаты начинается с позиции 60, поэтому - подвыражение: "^.\{59\}".
  2. Если зарплата составляет целое число тысяч, то в ней содержится одна или несколько цифр, за которыми следует три нуля - подвыражение: "[0-9]\{1,\}000".
  3. Однако возможна (теоретически) зарплата, например "10001", поэтому стоит позаботиться о том, чтобы следующие за тремя нулями символы были отличны от значащих цифр. Таких символов может быть сколько угодно, и это условие можно обеспечить подвыражением: "[^0-9]*".
  4. Итоговое регулярное выражение:
5. "^.\{59\}[0-9]\{1,\}000[^0-9]*"
  1. Протокол выполнения:
student@r111wslin01 ~ $ grep "^.\{59\}[0-9]\{1,\}000[^0-9]*" query17569 CHRIS L ALBERTS MANAGER RESEARCH NEW-YORK 30007788 DONALD T SCOTT ANALYST RESEARCH DALLAS 30007799 MATTHEW G FISHER ANALYST RESEARCH NEW-YORK 30007839 FRANCIS A KING PRESIDENT ACCOUNTING NEW-YORK 50007902 JENNIFER D FORD ANALYST RESEARCH DALLAS 3000student@r111wslin01 ~ $

Решение 2:

  1. Поскольку зарплата является последним полем строки файла query1, возможно, можно просто потребовать, чтобы три нуля были последними символами строки и сформулировать регулярное выражение таким образом: "000$". Однако, такое решение может наткнуться на неочевидное препятствие. Все зависит от того, какими средствами был подготовлен исходный файл query1 (особенно, если он был перенесен из другой системы).
    Дело в том, что разные программы и редакторы используют разные способы перевода строки, и в конце строки могут оказаться некоторые дополнительные (невидимые "невооруженным глазом" символы. Таким образом, последний 0 в зарплате может еще не быть последним символом строки. Как правило, увидеть эти дополнительные символы можно, выполнив команду cat с опцией -v. В этом случае на выдаче команды cat можно увидеть непечатный символ, показываемый, например, как: "^M".
  2. Следующие протокол иллюстрирует этот случай:
student@r111wslin01 ~ $ grep "000$" query1student@r111wslin01 ~ $ cat -v query17369 JOHN Q SMITH CLERK RESEARCH DALLAS 800^M7499 KEVIN J ALLEN SALESPERSON SALES CHICAGO 1600^M7505 JEAN K DOYLE MANAGER SALES NEW-YORK 2850^M7506 LYNN S DENNIS MANAGER SALES DALLAS 2750^M7507 LESLIE D BAKER MANAGER OPERATIONS NEW-YORK 2200^M7521 CYNTHIA D WARD SALESPERSON SALES CHICAGO 1250^M7555 DANIEL T PETERS SALESPERSON SALES NEW-YORK 1250^M7557 KAREN P SHAW SALESPERSON SALES NEW-YORK 1250^M7560 SARAH S DUNCAN SALESPERSON SALES DALLAS 1250^M7564 GREGORY J LANGE SALESPERSON SALES DALLAS 1250^M7566 TERRY M JONES MANAGER RESEARCH DALLAS 2975^M7569 CHRIS L ALBERTS MANAGER RESEARCH NEW-YORK 3000^M7600 RAYMOND Y PORTER SALESPERSON SALES NEW-YORK 1250^M7609 RICHARD M LEWIS STAFF OPERATIONS DALLAS 1800^M7654 KENNETH J MARTIN SALESPERSON SALES CHICAGO 1250^M7676 DENISE D SOMMERS STAFF OPERATIONS CHICAGO 1850^M7698 MARION S BLAKE MANAGER SALES CHICAGO 2850^M7782 CAROL F CLARK MANAGER ACCOUNTING NEW-YORK 2450^M7788 DONALD T SCOTT ANALYST RESEARCH DALLAS 3000^M7789 LIVIA N WEST SALESPERSON SALES DALLAS 1500^M7799 MATTHEW G FISHER ANALYST RESEARCH NEW-YORK 3000^M7820 PAUL S ROSS SALESPERSON SALES BOSTON 1300^M7839 FRANCIS A KING PRESIDENT ACCOUNTING NEW-YORK 5000^M7876 DIANE G ADAMS CLERK RESEARCH DALLAS 1100^M7900 FRED S JAMES CLERK SALES CHICAGO 950^M7902 JENNIFER D FORD ANALYST RESEARCH DALLAS 3000^M7916 GRACE M ROBERTS ANALYST RESEARCH NEW-YORK 2875^M7919 MICHAEL A DOUGLAS CLERK RESEARCH NEW-YORK 800^M7934 BARBARA M MILLER CLERK ACCOUNTING NEW-YORK 1300^M7950 ALICE B JENSEN CLERK SALES NEW-YORK 750^M7954 JAMES T MURRAY CLERK SALES DALLAS 750^Mstudent@r111wslin01 ~ $

Решение 3:

  1. Уточним логику предыдущего решения, оказавшегося неправильным. За тремя нулями перед концом строки может следовать (а может и не следовать) еще один символ, отличный от значащей цифры:
2. "000[^0-9]\{0,1\}"
  1. Протокол выполнения:
student@r111wslin01 ~ $ grep "000[^0-9]\{0,1\}" query17569 CHRIS L ALBERTS MANAGER RESEARCH NEW-YORK 30007788 DONALD T SCOTT ANALYST RESEARCH DALLAS 30007799 MATTHEW G FISHER ANALYST RESEARCH NEW-YORK 30007839 FRANCIS A KING PRESIDENT ACCOUNTING NEW-YORK 50007902 JENNIFER D FORD ANALYST RESEARCH DALLAS 3000student@r111wslin01 ~ $

[1] Граф — это пара , где — это множество вершин , а — множество рёбер . Граф называется ориентированным или направленным, если . Ребра направленного графа на диаграмме обозначаются стрелками.

[2] Говорят что граф содержит цикл, если начиная с некоторой вершины, переходя по рёбрам, можно каким-либо образом вернуться в эту же самую вершину.





Дата публикования: 2015-10-09; Прочитано: 799 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...