web-dev-qa-db-fra.com

Comment obtenir la première lettre d'une variable Bash?

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
74
Village
initial="$(echo $Word | head -c 1)"

Chaque fois que vous dites "premier" dans la description de votre problème, head est une solution probable.

25
thiton
Word="tiger"
firstletter=${Word:0:1}
232
Karoly Horvath
Word=something
first=${Word::1}
67
Adam Liss

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
10
Mateusz Piotrowski

Avec coupe:

Word='tiger'
echo "${Word}" | cut -c 1
2
Franckyz

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 :()

2
phicr

Utilisation de bash 4:

x="test"
read -N 1 var <<< "${x}"
echo "${var}"
1
leogtzr