it-swarm.com.de

Wie erhalte ich den ersten Buchstaben einer Bash-Variablen?

Ich habe eine Bash-Variable, $Word, das manchmal ein Wort oder ein Satz ist, z.

Word="tiger"

Oder:

Word="This is a sentence."

Wie kann ich eine neue Bash-Variable erstellen, die nur dem ersten Buchstaben in der Variablen entspricht? Zum Beispiel wäre das Obige:

echo $firstletter
t

Oder:

echo $firstletter
T
74
Village
initial="$(echo $Word | head -c 1)"

Jedes Mal, wenn Sie in Ihrer Problembeschreibung "zuerst" sagen, ist head eine wahrscheinliche Lösung.

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

Ein portabler Weg, dies zu tun, ist die Verwendung von Parametererweiterung (eine POSIX-Funktion) :

$ Word='tiger'
$ echo "${Word%"${Word#?}"}"
t
10

Mit Schnitt:

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

Da Sie ein sed -Tag haben, ist hier eine sed -Antwort:

echo "$Word" | sed -e "{ s/^\(.\).*/\1/ ; q }"

Spiel für Spiel für diejenigen, die Spaß daran haben (das tue ich!):

{

  • s: Start einer Substitutionsroutine
    • /: Geben Sie an, was ersetzt werden soll
    • ^\(.\): Erfassen Sie das erste Zeichen in Gruppe 1
    • .*: Stellen Sie sicher, dass sich der Rest der Zeile in der Ersetzung befindet
    • /: Geben Sie den Ersatz an
    • \1: Gruppe 1 einfügen
    • /: Der Rest wird verworfen ;
  • q: Beendet sed, damit dieser Block nicht für andere Zeilen wiederholt wird, falls vorhanden.

}

Na das war ein Spaß! :) Sie können auch grep und etc verwenden, aber wenn Sie sich in bash befinden, ist die Magie ${x:0:1} Immer noch die bessere Lösung imo. (Ich habe ungefähr eine Stunde damit verbracht, die POSIX-Variablenerweiterung zu verwenden, konnte aber nicht :()

2
phicr

Bash 4 benutzen:

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