Trebuie să înlocuiesc toate aparițiile „asteriscului de perioadă” așa cum se arată aici:
blah blah .*:.*:.* blah blah
cu:
[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
astfel încât rezultatul final să arate astfel:
blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah
Am încercat diferite variante ale următoarelor, dar nu a funcționat:
%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
Răspuns
Ați dat un exemplu de linie cu „asterisc de punct” repetată de trei ori, separate prin două puncte. Dacă datele dvs. vor arăta întotdeauna așa, s-ar putea să rămâneți cu Răspunsul lui AlexP . Dar întrebarea dvs. spune că trebuie să înlocuiți toate aparițiile „asteriscului de perioadă”. Dacă acea declarație din problema este corectă, ar trebui să utilizați
:%s/\.\*/[0-9][0-9]/g
care va găsi și înlocui „asterisc de punct” chiar și atunci când nu apare în grupuri de trei.
Răspuns
Pentru Vim:
Pentru sed
: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g"
.
-
%
înseamnă aplicarea substituției pe toate liniile; nu este necesar însed
unde în mod implicit comanda este aplicată tuturor liniilor. -
\.
este o perioadă; un gol.
înseamnă orice caracter. -
\*
este un asterisc; un*
gol înseamnă 0 sau mai mult din atomul precedent.
Răspuns
Utilizarea modificatorului nomagic
pentru modelul din Vim:
:%s/\M.*/[0-9][0-9]/g
\M
va elimina specialitatea atât a .
, cât și a *
din model.
Consultați :help magic
în Vim.