web-dev-qa-db-fra.com

Comment faire correspondre les chiffres suivis d'un point à l'aide de sed?

J'essaie d'utiliser sed pour remplacer tous les modèles par des chiffres suivis immédiatement par un point (tel que 3., 355.) par une chaîne vide. Alors j'essaye:

sed 's/\d+\.//g' file.txt

Mais ça ne marche pas. Pourquoi donc?

68
Mika H.

Parce que sed n’est pas Perl - les expressions rationnelles sed n’ont pas de raccourci \d:

sed 's/[[:digit:]]\+\.//g'

sed expression régulière documentation ici .

102
glenn jackman

Deux problèmes:

  1. sed ne supporte pas \d. Utilisez [0-9] ou [[:digit:]].

  2. + doit être contre-slashé pour obtenir la signification spéciale: \+.

63
choroba

La page de manuel sed fait référence à la page de manuel re_format. Il fait 2 distinctions: (1) expressions régulières obsolètes par rapport aux expressions régulières étendues; (2) expressions régulières non améliorées par rapport aux expressions régulières améliorées. Les 4 combinaisons sont possibles. Sed est obsolète et étendu, mais dans les deux cas uniquement pour les versions non améliorées. L'opérateur\d est une fonctionnalité d'expressions régulières améliorée, donc non prise en charge par sed.

3
Jonathan Pool