OR booléen dans sed regex
Je suis en train de remplacer toutes les références d'un package nommé boots
dans un fichier de configuration.
Le format de la ligne est add fast (package OR pkg) boots-(any-other-text)
par exemple:
add fast package boots-2.3
add fast pkg boots-4.5
Je veux le remplacer par:
add fast pkg boots-5.0
J'ai essayé les sed
commandes:
sed -e 's/add fast (pkg\|package) boots-.*/add yinst pkg boots-5.0/g'
sed -e 's/add fast [pkg\|package] boots-.*/add yinst pkg boots-5.0/g'
Quelle est la bonne regex? Je pense que je suis absent quelque chose dans le ou booléen (package
ou pkg
).
source d'informationauteur Adam Matan
Vous devez vous connecter pour publier un commentaire.
Vous pouvez toujours éviter de le OU en le faisant deux fois
L'utilisation prolongée de la regex de la mode, et ne pas échapper à la
|
.Vous êtes de mélange de BRES et de l'ERE s'agit soit d'échapper à la fois
()
et|
ou aucun.sed utilise de base des expressions régulières par défaut, permettant l'utilisation des expressions régulières étendues est dépendant de l'implémentation, par exemple, avec BSD sed vous utilisez le
-E
commutateur, GNU sed a documenté comme-r
mais-E
fonctionne aussi bien.GNU (Linux):
1) Font suite à des chaînes aléatoires
à vide
2) sed-r pour utiliser les opérateurs logiques dans GNU comme @Thor mentionné, et -je à la volée modifier un fichier sur le match trouvé