Ik moet alle exemplaren van “period asterisk” vervangen zoals het hier wordt weergegeven:
blah blah .*:.*:.* blah blah
met:
[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
zodat het eindresultaat er als volgt uitziet:
blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah
Ik heb verschillende varianten van het volgende geprobeerd, maar het werkte niet:
%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
Antwoord
Je gaf een voorbeeld van een regel met “punt asterisk” drie keer herhaald, gescheiden door dubbele punten. Als je gegevens er altijd zo uitzien, kun je net zo goed vasthouden aan AlexPs antwoord . Maar uw vraag zegt dat u alle exemplaren van “punt asterisk” moet vervangen. Als die verklaring van als het probleem klopt, moet u
:%s/\.\*/[0-9][0-9]/g
gebruiken om “punt asterisk” te vinden en te vervangen, zelfs als het niet in groepen van drie voorkomt.
Answer
Voor Vim:
Voor sed
: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g"
.
-
%
betekent de vervanging op alle regels toepassen; is niet nodig insed
waar het commando standaard op alle regels wordt toegepast. -
\.
is een punt; een kale.
betekent elk teken. -
\*
is een asterisk; een kale*
betekent 0 of meer van het voorgaande atoom.
Antwoord
De nomagic
modifier gebruiken voor het patroon in Vim:
:%s/\M.*/[0-9][0-9]/g
De \M
verwijdert de bijzonderheid van zowel .
als *
in het patroon.
Zie :help magic
in Vim.