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 tarvitased
-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ä.