J'ai une variable Bash, $Word
, qui est parfois un mot ou une phrase, par exemple:
Word="tiger"
Ou:
Word="This is a sentence."
Comment puis-je créer une nouvelle variable Bash qui est égale à la première lettre trouvée dans la variable? Par exemple, ce qui précède serait:
echo $firstletter
t
Ou:
echo $firstletter
T
initial="$(echo $Word | head -c 1)"
Chaque fois que vous dites "premier" dans la description de votre problème, head
est une solution probable.
Word="tiger"
firstletter=${Word:0:1}
Word=something
first=${Word::1}
Une façon portable de le faire est d'utiliser extension de paramètre (qui est une fonctionnalité POSIX) :
$ Word='tiger'
$ echo "${Word%"${Word#?}"}"
t
Avec coupe:
Word='tiger'
echo "${Word}" | cut -c 1
Puisque vous avez une balise sed
, voici une réponse sed
:
echo "$Word" | sed -e "{ s/^\(.\).*/\1/ ; q }"
Jouer en jouant pour ceux qui apprécient ceux (je le fais!):
{
s
: lance une routine de substitution /
: Commencez à spécifier ce qui doit être remplacé^\(.\)
: capture le premier caractère du groupe 1.*
:, assurez-vous que le reste de la ligne sera dans la substitution/
: Commencez à spécifier le remplacement\1
: Insère le groupe 1/
: Le reste est ignoré ;
q
: quittez sed
pour qu'il ne répète pas ce bloc pour d'autres lignes s'il y en a.}
C'était amusant! :)
Vous pouvez aussi utiliser grep
et etc, mais si vous êtes dans bash
, la magie ${x:0:1}
Est toujours la meilleure solution imo. (J'ai passé une heure à essayer d'utiliser l'extension variable POSIX pour le faire mais je n'ai pas pu :(
)
Utilisation de bash 4:
x="test"
read -N 1 var <<< "${x}"
echo "${var}"