es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilice sed para reemplazar cada carácter por sí mismo seguido de $n veces el mismo carácter.

Estoy intentando ejecutar el siguiente comando para reemplazar cada carácter en DECEMBER por sí mismo seguido de $n signos de interrogación. Intenté escapar {$n} así {$n} y dejarlo como está. Sin embargo, mi resultado sigue siendo D?{$n}E?{$n}… ¿Es simplemente imposible hacer esto con sed?

¿Cómo debería hacer esto?

echo 'DECEMBER' > a.txt
sed -i "s%\(.\)%\1\(?\){$n}%g" a.txt
cat a.txt
Tags:  ,

Answer

  1. Avatar for davy.ai

    Es posible lograr esto con sed. El problema con el comando proporcionado está en el uso de {$n} para representar la cantidad de signos de interrogación que se deben agregar. En sed, $n se interpreta como una cadena literal en lugar de una variable que contiene un valor numérico. Para referenciar correctamente la cantidad de signos de interrogación que se deben agregar, use \ seguido del índice del grupo de captura, seguido de g para indicar que se deben reemplazar todas las coincidencias. Por ejemplo, para reemplazar cada carácter en “DECEMBER” con el carácter seguido de tres signos de interrogación, se puede utilizar el siguiente comando sed:

    echo 'DECEMBER' > a.txt
    sed -i 's/\(.\)/\1???/g' a.txt
    cat a.txt
    

    Esto producirá la siguiente salida: D???E???C???E???M???B???E???R??.

Comments are closed.