Devo sostituire tutte le occorrenze di “asterisco punto” come mostrato qui:
blah blah .*:.*:.* blah blah
con:
[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
in modo che il risultato finale sia simile a questo:
blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah
Ho provato diverse varianti di quanto segue ma “non ha funzionato:
%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
Risposta
Hai fornito un esempio di una riga con “punto asterisco” ripetuta tre volte, separate da due punti. Se i tuoi dati saranno sempre così, potresti anche restare con Risposta di AlexP . Ma la tua domanda dice che devi sostituire tutte le occorrenze di “asterisco punto”. Se quella dichiarazione di il problema è preciso, dovresti usare
:%s/\.\*/[0-9][0-9]/g
che troverà e sostituirà “asterisco punto” anche quando non appare in gruppi di tre.
Risposta
Per Vim:
Per sed
: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g"
.
-
%
significa applicare la sostituzione su tutte le righe; non è necessario insed
dove per impostazione predefinita il comando viene applicato a tutte le righe. -
\.
è un punto; un.
nudo indica qualsiasi carattere. -
\*
è un asterisco; un*
significa 0 o più dellatomo precedente.
Risposta
Utilizzo del modificatore nomagic
per il pattern in Vim:
:%s/\M.*/[0-9][0-9]/g
Il \M
rimuoverà la particolarità di entrambi .
e *
nel pattern.
Vedi :help magic
in Vim.