Nie generuje to żadnych danych wyjściowych. Dlaczego?
$ echo 'this 1 2 3' | grep '\d\+'
Ale te robią:
$ echo 'this 1 2 3' | grep '\s\+'
this 1 2 3
$ echo 'this 1 2 3' | grep '\w\+'
this 1 2 3
\+
? Co to znaczy?
+
w wyrażeniu regularnym oznacza „jeden lub więcej poprzednich tokenów”. W tym przypadku jest to znak ucieczki, ponieważ jest to składnia wymagana przez grep
domyślny silnik wyrażeń regularnych.
+
należy uciec, jeśli używasz grep
; jeśli używasz egrep
, nie działa. grep -E
jest równoważne egrep
(przynajmniej dla wersji GNU).