Erstatter. * I vi

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *