2012-02-08 31 views
14

Quiero reemplazar una cadena con un comodín pero no funciona.usando SED con el comodín

La cadena se ve como "un poco de cuerdas-8"

escribí

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

pero la salida es

some-string-08 

Respuesta

25

El asterisco (*) significa "cero o más de el ítem anterior ".

Si desea hacer coincidir cualquier carácter individual utilizar

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

Si desea hacer coincidir con cualquier cadena (es decir, cualquier carácter único cero o más veces) utiliza

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

Bueno, tal vez mi pregunta era incompleta ... tu comando funciona para este fien. Sin embargo, si tengo 'some-string-8 -x --command acommand', la salida de ejecutar ese comando es' some-string-0'. borrará todos los caracteres después de eso. Quiero 'some-string-0 -x --command acommand' – mahmood

+0

ok, el primer comando es lo que quiero – mahmood

+0

¿Qué ocurre si deseas usar el comodín en la cadena de reemplazo? ejemplo: reemplace 'AAA. * BBB' con 'CCC. * DDD' – user2561747

5

Por lo tanto, el concepto de un "comodín" en expresiones regulares funciona de forma un poco diferente. Para hacer coincidir "cualquier personaje", usaría "." El modificador "*" significa que coincide con cualquier número de veces.

Cuestiones relacionadas