Jeg må erstatte alle forekomster av «periode-stjerne» slik det er vist her:
blah blah .*:.*:.* blah blah
med:
[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
slik at sluttresultatet ser slik ut:
blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah
Jeg prøvde forskjellige varianter av følgende, men det fungerte ikke:
%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
Svar
Du ga et eksempel på en linje med «periodestjerne» gjentatt tre ganger, atskilt med kolon. Hvis dataene dine alltid vil se slik ut, kan du like godt holde deg til AlexPs svar . Men spørsmålet ditt sier at du må erstatte alle forekomster av «periode-stjerne». Hvis den uttalelsen av problemet er nøyaktig, bør du bruke
:%s/\.\*/[0-9][0-9]/g
som finner 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"
.
-
%
betyr å bruke erstatningen på alle linjer; er ikke nødvendig ised
hvor kommandoen som standard brukes på alle linjer. -
\.
er en periode; et blott.
betyr hvilket som helst tegn. -
\*
er en stjerne; et blott*
betyr 0 eller flere av foregående atom.
Svar
Bruk nomagic
modifikator for mønsteret i Vim:
:%s/\M.*/[0-9][0-9]/g
\M
fjerner spesialiteten til både .
og *
i mønsteret.
Se :help magic
i Vim.