Odpowiedzi:
Ponieważ sed nie jest perlem - wyrażenia regularne sed nie mają \d
skrótu:
sed 's/[[:digit:]]\+\.//g'
tutaj znajduje się dokumentacja wyrażeń regularnych .
/[[:digit:]]*\. /
dopasuje ciąg, foo.
ponieważ dopuszczasz zero cyfr. Jeśli chcesz użyć jednego lub więcej, \+
jak pokazano
Dwa problemy:
sed
nie obsługuje \d
. Użyj [0-9]
lub [[:digit:]]
.
+
Należy odwrotnym ukośnikiem, aby uzyskać specjalne znaczenie: \+
.
interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's).
Niestety, nie pomaga to z problemem \ d ...
-E
nie działa dla GNU sed, -r
zamiast tego używa .
sed
to, że jest do bani, jeśli chodzi o przenośność ...
-E
na BSD sed i -r
GNU sed), w BSD sed, ani +
nor \+
(to samo z ?
) w ogóle nie będzie działać, podczas gdy w GNU sed możesz zachęć ich do pracy z odwrotnym ukośnikiem. Stąd powszechna rekomendacja używania rozszerzonego wyrażenia regularnego w skryptach
Strona man sed odwołuje się do strony man re_format. To czyni 2 rozróżnienia: (1) przestarzałe w porównaniu do rozszerzonych wyrażeń regularnych; (2) nieulepszone kontra ulepszone wyrażenia regularne. Możliwe są wszystkie 4 kombinacje. Istnieje wsparcie zarówno dla przestarzałych, jak i rozszerzonych, ale w obu przypadkach tylko dla nieulepszonych. Operator \ d jest funkcją ulepszonych wyrażeń regularnych, dlatego nie jest obsługiwany przez sed.