Jeg er nødt til at erstatte alle forekomster af “periode-stjerne”, som det er vist her:
blah blah .*:.*:.* blah blah
med:
[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
så slutresultatet ser sådan ud:
blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah
Jeg prøvede forskellige variationer af følgende, men det fungerede ikke:
%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
Svar
Du gav et eksempel på en linje med “periodestjerne” gentaget tre gange adskilt af kolon. Hvis dine data altid vil se sådan ud, kan du lige så godt holde fast ved AlexPs svar . Men dit spørgsmål siger at du er nødt til at erstatte alle forekomster af “periode-stjerne”. Hvis denne sætning af problemet er nøjagtigt, skal du bruge
:%s/\.\*/[0-9][0-9]/g
som finder og erstatter “periodestjerne”, selv når den ikke vises i grupper på tre.
Svar
For Vim:
For sed
: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g"
.
-
%
betyder anvendelse af substitutionen på alle linjer; er ikke nødvendigt ised
hvor kommandoen som standard anvendes på alle linjer. -
\.
er en periode; et blott.
betyder ethvert tegn. -
\*
er en stjerne; et blott*
betyder 0 eller flere af det foregående atom.
Svar
Brug nomagic
-modifikatoren til mønsteret i Vim:
:%s/\M.*/[0-9][0-9]/g
\M
fjerner specialiteten af både .
og *
i mønsteret.
Se :help magic
i Vim.