Korvaa. * Vi: ssä

Minun täytyy korvata kaikki jakson tähti ”esiintymät”, kuten se näkyy täällä:

blah blah .*:.*:.* blah blah 

kanssa:

[0-9][0-9]:[0-9][0-9]:[0-9][0-9] 

niin, että lopputulos näyttää tältä:

blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah 

Kokeilin seuraavien muunnelmia, mutta se ei toiminut:

%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g 

Vastaa

Annoit esimerkin rivistä, jonka ”piste-tähti” toistetaan kolme kertaa kaksoispisteillä erotettuna. Jos tietosi näyttävät aina sellaisilta, voit yhtä hyvin pitää kiinni AlexP: n vastaus . Mutta kysymyksesi kertoo , että sinun on korvattava kaikki jaksotähden esiintymät. Jos kyseinen lauseke ongelma on tarkka, sinun tulee käyttää

:%s/\.\*/[0-9][0-9]/g 

joka löytää ja korvaa ”jaksotähden”, vaikka se ei näy kolmena ryhmänä.

Vastaus

Vimille:

For sed: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g".

  • % tarkoittaa korvauksen käyttämistä kaikilla viivoilla; ei tarvita sed -kohdassa, jossa komentoa käytetään oletusarvoisesti kaikille riveille.
  • \. on piste; paljas . tarkoittaa mitä tahansa merkkiä.
  • \* on tähti; paljas * tarkoittaa 0 tai enemmän edellisestä atomista.

Vastaa

nomagic -muokkauksen käyttäminen Vim-mallissa:

:%s/\M.*/[0-9][0-9]/g 

\M poistaa sekä mallin . että * erikoisuuden.

Katso :help magic Vimissä.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *