Jag måste ersätta alla förekomster av ”period asterisk” som det visas här:
blah blah .*:.*:.* blah blah
med:
[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
så att slutresultatet ser ut så här:
blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah
Jag försökte olika varianter av följande men det fungerade inte:
%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
Svar
Du gav ett exempel på en rad med ”period-asterisk” upprepad tre gånger, åtskilda av kolon. Om dina data alltid ser ut så kan du lika gärna hålla fast vid AlexPs svar . Men din fråga säger att du måste ersätta alla förekomster av ”period asterisk”. Om det uttalandet av problemet är korrekt bör du använda
:%s/\.\*/[0-9][0-9]/g
som hittar och ersätter ”period-asterisk” även när den inte visas i grupper om tre.
Svar
För Vim:
För sed
: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g"
.
-
%
betyder tillämpa substitutionen på alla rader; behövs inte ised
där kommandot som standard tillämpas på alla rader. -
\.
är en period; en bar.
betyder vilken karaktär som helst. -
\*
är en asterisk; ett kalt*
betyder 0 eller fler av föregående atom.
Svar
Använd nomagic
modifieraren för mönstret i Vim:
:%s/\M.*/[0-9][0-9]/g
\M
tar bort specialiteten hos både .
och *
i mönstret.
Se :help magic
i Vim.