Je dois remplacer toutes les occurrences de « period asterisk » comme il est montré ici:
blah blah .*:.*:.* blah blah
avec:
[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
pour que le résultat final ressemble à ceci:
blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah
Jai essayé différentes variantes de ce qui suit mais cela na pas fonctionné:
%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
Réponse
Vous avez donné un exemple de ligne avec « point astérisque » répété trois fois, séparés par des deux-points. Si vos données ressembleront toujours à cela, vous pourriez aussi bien vous en tenir à Réponse dAlexP . Mais votre question dit que vous devez remplacer toutes les occurrences de « période astérisque ». Si cette déclaration de le problème est précis, vous devez utiliser
:%s/\.\*/[0-9][0-9]/g
qui trouvera et remplacera « période astérisque » même sil napparaît pas par groupe de trois.
Réponse
Pour Vim:
Pour sed
: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g"
.
-
%
signifie appliquer la substitution sur toutes les lignes; nest pas nécessaire danssed
où, par défaut, la commande est appliquée à toutes les lignes. -
\.
est un point; un.
nu signifie nimporte quel caractère. -
\*
est un astérisque; un simple*
signifie 0 ou plus de latome précédent.
Réponse
Utilisation du modificateur nomagic
pour le motif dans Vim:
:%s/\M.*/[0-9][0-9]/g
Le \M
supprimera la particularité de .
et *
dans le modèle.
Voir :help magic
dans Vim.