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 n'est égale qu'à la première lettre trouvée dans la variable? Par exemple, ce qui précède serait:
echo $firstletter
t
Ou:
echo $firstletter
T
-c
option dans POSIX head: < unix.com/man-page/posix/1/head >.${word:0:1}
ou${word::1}
.echo "$word" | fold -w1 | head -n 1
,printf '%.1s' "$X"
ouprintf '%c' "$X"
mais ceux-ci sont tous soumis à des manigances de caractères à un ou plusieurs octets.head -c n
, oups.echo "fábio" | head -c 2
donnef�
, donc c'est un autre problème avec cela, je suppose.word="tiger" firstletter=${word:0:1}
la source
word=something first=${word::1}
la source
first
est mis à la lettres
. Vous pouvez le voir avececho $s
. Si cela ne fonctionne pas pour vous et que vous souhaitez obtenir de l'aide pour le débogage, copiez et collez la ou les commandes que vous avez tapées et leur sortie.Une manière portable de le faire est d'utiliser l' expansion des paramètres (qui est une fonctionnalité POSIX) :
$ word='tiger' $ echo "${word%"${word#?}"}" t
la source
Avec coupe:
word='tiger' echo "${word}" | cut -c 1
la source
Puisque vous avez une
sed
balise, voici unesed
réponse:echo "$word" | sed -e "{ s/^\(.\).*/\1/ ; q }"
Jouez par jeu pour ceux qui aiment ceux-là (je le fais!):
{
s
: démarrer une routine de substitution/
: Commencez à spécifier ce qui doit être remplacé^\(.\)
: capturez le premier personnage du groupe 1.*
:, assurez-vous que le reste de la ligne sera dans la substitution/
: commencez à spécifier le remplacement\1
: insérer le groupe 1/
: Le reste est rejeté;
q
: Quittezsed
pour qu'il ne répète pas ce bloc pour les autres lignes s'il y en a.}
Eh bien, c'était amusant!
:)
Vous pouvez également utilisergrep
et etc, mais si vous êtes dansbash
la${x:0:1}
magie, c'est toujours la meilleure solution imo. (J'ai passé environ une heure à essayer d'utiliser l'extension de variable POSIX pour le faire, mais je n'ai pas pu:(
)la source
Utilisation de bash 4:
x="test" read -N 1 var <<< "${x}" echo "${var}"
la source