script - variables de entorno linux bash
¿Cómo obtener la primera letra en una variable Bash? (7)
Tengo una variable Bash, $word
, que a veces es una palabra u oración, por ejemplo:
word="tiger"
O:
word="This is a sentence."
¿Cómo puedo crear una nueva variable Bash que sea igual a solo la primera letra encontrada en la variable? Por ejemplo, lo anterior sería:
echo $firstletter
t
O:
echo $firstletter
T
Con corte:
word=''tiger''
echo "${word}" | cut -c 1
Una forma portátil de hacerlo es usar la expansión de parámetros (que es una característica de POSIX) :
word=''tiger''
first="${word%"${word#?}"}"
Utilizando bash 4:
x="test"
read -N 1 var <<< "${x}"
echo "${var}"
Ya que tienes una etiqueta sed
aquí es una respuesta sed
:
echo "$word" | sed -e "{ s/^/(./).*//1/ ; q }"
Juego por juego para aquellos que disfrutan de esos (¡yo sí!):
{
-
s
: iniciar una rutina de sustitución-
/
: Empezar a especificar qué se va a sustituir. -
^/(./)
: captura el primer carácter en el Grupo 1 -
.*
:, asegúrese de que el resto de la línea estará en la sustitución -
/
: empezar a especificar el reemplazo -
/1
: insertar Grupo 1 -
/
: El resto se desecha;
-
-
q
: Salga desed
para que no se repita este bloque para otras líneas si hay alguna.
}
¡Bueno eso fue divertido! :)
También puedes usar grep
y etc, pero si estás en bash
la magia ${x:0:1}
sigue siendo la mejor solución para imo. (Pasé como una hora tratando de usar la expansión de la variable POSIX para hacer eso, pero no pude :(
)
initial="$(echo $word | head -c 1)"
Cada vez que diga "primero" en la descripción de su problema, la head
es una solución probable.
word=something
first=${word::1}
word="tiger"
firstletter=${word:0:1}