Remplacement. * Dans vi

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 dans sed 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *