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.

¿Cuál es la diferencia entre \u y \U en GNU sed?

Me he encontrado con estos dos comandos \u y \U (y otros como \l y \L) en sed. Tengo que admitir que soy nuevo en esto y tengo poca experiencia con GNU sed.
He probado los siguientes dos comandos pero obteniendo el mismo resultado:

# He probado esto en Ubuntu 20.04
echo "abc" | sed 's/./\u&/g' # el resultado es: ABC
echo "abc" | sed 's/./\U&/g' # el resultado es: ABC

El resultado es el mismo para los dos comandos. ¿Entonces, cuál es la diferencia entre ellos?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    \u y \U son secuencias de escape en el comando “s” (sustituir) de GNU sed. Se utilizan para modificar el caso de los caracteres que coinciden con expresiones regulares.

    \u significa poner en mayúscula el carácter que le sigue, mientras que \U significa poner en mayúscula todos los caracteres hasta el final de la cadena o la siguiente secuencia de escape \E.

    En el ejemplo proporcionado, ambos comandos pondrían en mayúscula la primera letra de la cadena “abc”, ya que el comando “s” sustituye el primer carácter por su versión en mayúsculas.

    Sin embargo, si el comando se modificara para incluir más caracteres, como:

    echo "aBcDeF" | sed 's/.\u&/g'
    echo "aBcDeF" | sed 's/.\U&/g'
    

    La salida sería diferente. El primer comando mostraría “AbCdEf”, mientras que el segundo comando mostraría “ABCDEF”, ya que \U pone en mayúscula todos los caracteres hasta el final de la cadena o la siguiente secuencia de escape \E.

Comments are closed.