OnWorks Linux i Windows Online WorkStation

logo

Darmowy hosting online dla stacji roboczych

<Poprzedni | Spis treści | Następne>

POSIX Basic vs. Rozszerzone wyrażenia regularne

Właśnie wtedy, gdy pomyśleliśmy, że nie może to być już bardziej zagmatwane, odkrywamy, że POSIX dzieli również implementacje wyrażeń regularnych na dwa rodzaje: podstawowe wyrażenia regularne (BRE) i rozszerzone wyrażenia regularne (ERE). Funkcje, które omówiliśmy do tej pory, są obsługiwane przez dowolną aplikację zgodną z POSIX i implementującą BRE. Nasz grep program jest jednym z takich programów.

Jaka jest różnica między BRE i ERE? To kwestia metaznaków. W BRE rozpoznawane są następujące metaznaki:

^ $ . [ ] *

Wszystkie inne znaki są uważane za literały. W ERE dodano następujące metaznaki (i powiązane z nimi funkcje):

( ) {}? + |

Jednakże (i to jest najzabawniejsze) znaki „(”, „)”, „{” i „}” są traktowane w BRE jako metaznaki if są one poprzedzone ukośnikiem odwrotnym, podczas gdy w ERE poprzedzenie dowolnego metaznaku ukośnikiem odwrotnym powoduje, że jest on traktowany jako dosłowny. Wszelkie dziwactwa, które się pojawią, zostaną omówione w poniższych dyskusjach.

obraz

Ponieważ funkcje, które omówimy dalej, są częścią ERE, będziemy musieli użyć innego grep. Tradycyjnie zajmowało się tym egrep programu, ale wersja GNU grep obsługuje również rozszerzone wyrażenia regularne, gdy -E opcja jest używana.


POSIX

W latach osiemdziesiątych Unix stał się bardzo popularnym komercyjnym systemem operacyjnym, ale w roku 1980 w świecie Uniksa panował chaos. Wielu producentów komputerów uzyskało licencję na kod źródłowy Uniksa od jego twórców, firmy AT&T, i dostarczało ze swoimi systemami różne wersje systemu operacyjnego. Jednak starając się zróżnicować produkty, każdy producent dodał własne zmiany i rozszerzenia. Zaczęło to ograniczać kompatybilność oprogramowania. Jak zawsze z

obraz

POSIX Basic vs. Rozszerzone wyrażenia regularne


zastrzeżonych dostawców, każdy z nich próbował wygrać ze swoimi klientami zwycięską grę polegającą na „zablokowaniu się”. Ten mroczny okres w historii Uniksa znany jest dziś jako „bałkanizacja".

Wejdź do IEEE (Instytut Inżynierów Elektryków i Elektroników). W połowie lat 1980. IEEE rozpoczęło opracowywanie zestawu standardów, które definiowałyby działanie systemów uniksowych (i podobnych do uniksowych). Standardy te, formalnie znane jako IEEE 1003, definiują interfejsy programowania aplikacji (API), powłokę i narzędzia, które można znaleźć w standardowym systemie uniksowym. Nazwa „POSIX” oznacza Przenośny interfejs systemu operacyjnego (z „X” dodanym na końcu dla większej złośliwości) zostało zasugerowane przez Richarda Stallmana (tak, że Richarda Stallmana) i został przyjęty przez IEEE.


Najlepsze przetwarzanie w chmurze dla systemu operacyjnego w OnWorks: