Używam sed. Używałem wyrażenia regularnego, które było prawidłowe, o ile mogłem zobaczyć, ale sed nic nie zrobił. Okazuje się, że korzystałem z \s+
którego sed nie może zrozumieć, a kiedy przełączyłem się na [ ]+
to, działało.
Podsumowując, stworzyłem regex, który by zadziałał, musiałem uciec prawie wszystko i usunąć \s
spację. Wydaje się, że istnieje sposób na uniknięcie tych wszystkich, -r
więc chciałem zapytać:
- Dlaczego nie
-r
ma domyślnego trybu dla sed? Dlaczego musiałem zadawać sobie tyle trudu, by uciec od wszystkiego? man
mówi, że istnieje opcja--posix
i że „Dokumenty BRE POSIX.2 powinny być obsługiwane” Co to dotyczy? Tryb NFA / DFA?
\s+
użycie perla[[:space:]][:space:]]*
w BRE i tym samym lub[[:space:]]+
w ERE.Odpowiedzi:
Re 1) Odpowiedź jest taka sama, jak w przypadku każdego innego narzędzia, które było ulepszane przez dziesięciolecia. :)
Nie chcesz łamać istniejących skryptów, zmieniając domyślne zachowanie.
Re 2) To nie ma nic wspólnego z dopasowanym silnikiem; to tylko pytanie, który zestaw wyrażeń regularnych jest obsługiwany. POSIX BRE oznacza „podstawowe wyrażenie regularne”.
źródło
Odnośnie do punktu 2: domyślnie
gnu sed
używa GNUBRE
. Aby użyć POSIXBRE
, należy określić--posix
źródło