2 votos

Reemplace el número con un patrón específico de estrella para todo el archivo

En mi archivo quiero reemplazar el número por *

Ejemplo:

 data[0] ---> data[*]
 

Tengo data[0] a data[127] y también quiero hacerlo para todo el archivo. Entonces, ¿cómo puedo hacer sólo por el número?

Probé con comando

 sed 's/[[0-9][0-9]]/[*]/g'
 

pero no funciona correctamente.

Así que por favor guíame.

0voto

datdinhquoc Puntos 126

Esto reemplazará todos los dígitos entre corchetes y asteriscos:

 sed 's/\[[0-9]*\]/\[*\]/g'
 

0voto

simlev Puntos 204

Respuesta: he Aquí cómo usted puede modificar su tentativa SED de expresión (sed 's/[[0-9][0-9]]/[*]/g'):

sed -E 's/\[[0-9]{1,3}]/[*]/g'

Explicación:

  • escapar de la inicial corchete [ con una barra invertida \ porque desea que la expresión de la coincidencia de un literal [ en comparación con cualquiera de los caracteres que se escriben entre corchetes. Posterior corchetes no necesita escapar.

  • especificar el número de dígitos que desea para que coincidan con: {1,3} significa que cualquier número natural empezando 1 e a 3. Para que esto funcione, necesita habilitar las expresiones regulares extendidas con la -E switch (sin que usted podría ser contenido con sed 's/\[[0-9]*]/[*]/g'). Debe estar disponible en su sed , ya que, según man sed:

    la opción-E ha sido respaldada por años por GNU sed, y ahora se incluye en POSIX.


Perl alternativa aquí:

perl -pe 's/data\[\K\d+(?=])/*/g'

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: