2 votes

Comment obtenir + métacaractère pour sed dans le Terminal ?

Il semble que le sed livré avec Mac OS 1.7.4 est le sed original, sans le + métacaractère. Puis-je obtenir le + la fonctionnalité des métacaractères ?

2voto

Gordon Davisson Points 30215

L'implémentation d'OS X de sed utilise par défaut le format d'expression régulière "de base", qui ne prend pas en charge le format + . De man re_format :

Obsolete (``basic'') regular expressions differ in several respects.  `|'
is an ordinary character and there is no equivalent for its functional-
ity.  `+' and `?' are ordinary characters, and their functionality can be
expressed using bounds (`{1,}' or `{0,1}' respectively).  Also note that
`x+' in modern REs is equivalent to `xx*'.  The delimiters for bounds are
`\{' and `\}', with `{' and `}' by themselves ordinary characters.  The
parentheses for nested subexpressions are `\(' and `\)', with `(' and `)'
by themselves ordinary characters. [...]

Alors, que pouvez-vous faire ? Eh bien, une possibilité est de dire sed pour utiliser le format moderne avec le -E interrupteur. Toutefois, cela peut vous obliger à réécrire d'autres parties de votre RE pour vous y conformer (par exemple, en remplaçant \( ... \) avec ( ... ) ). Une autre option consiste à utiliser l'une des formes alternatives suggérées ci-dessus. Voici des exemples utilisant les différentes approches pour faire correspondre "A" suivi d'un ou plusieurs "B" ou "C", suivi de "D" :

sed -E 's/A[BC]+D/[match]/'
sed 's/A[BC]\{1,\}D/[match]/'
sed 's/A[BC][BC]*D/[match]/'

1voto

Petros Points 4430

En + est un Extension GNU de sed qui correspond à une ou plusieurs des expressions précédentes mais la version sur OS X est BSD sed . Une version de GNU sed a été porté sur OS X sur MacPorts . O

Par exemple, pour faire correspondre un ou plusieurs chiffres, vous pouvez utiliser [0-9][0-9]* au lieu de [0-9]+

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X