2012-02-08 18 views
14

Voglio sostituire una stringa con caratteri jolly ma non funziona.utilizzando SED con caratteri jolly

La stringa si presenta come "un po 'di-string-8"

ho scritto

sed -i 's/string-*/string-0/g' file.txt 

ma l'uscita è

some-string-08 

risposta

25

L'asterisco (*) significa "zero o più l'articolo precedente ".

Se si desidera far corrispondere ogni singolo carattere utilizzare

sed -i 's/string-./string-0/g' file.txt 

Se si desidera far corrispondere qualsiasi stringa (cioè ogni singolo carattere zero o più volte) utilizzare

sed -i 's/string-.*/string-0/g' file.txt 
+0

beh, forse la mia domanda era incompleta .... il tuo comando funziona per questo fien. Comunque se ho 'some-string-8 -x --comando acommand', l'output dell'esecuzione di quel comando è' some-string-0'. cancellerà tutti i caratteri dopo quello. Voglio 'some-string-0 -x --command acommand' – mahmood

+0

ok il primo comando è quello che voglio – mahmood

+0

e se si desidera utilizzare il carattere jolly nella stringa di sostituzione? esempio: sostituire 'AAA. * BBB' con 'CCC. * DDD' – user2561747

5

Così, il concetto di un "carattere jolly" in Espressioni regolari funziona in modo leggermente diverso. Per abbinare "qualsiasi carattere" useresti "." Il modificatore "*" significa che corrisponde a un numero qualsiasi di volte.