Как получить первую букву в переменной Bash?
у меня есть переменная Bash,$word, что иногда является словом или предложением, например:
word="tiger"
или:
word="This is a sentence."
как я могу сделать новую переменную Bash, которая равна только первой букве, найденной в переменной? Например, выше было бы:
echo $firstletter
t
или:
echo $firstletter
T
7 ответов:
initial="$(echo $word | head -c 1)"каждый раз, когда вы говорите "первый" в вашем описании проблемы,
headявляется вероятным решением.
портативный способ сделать это-использовать расширения параметр (который является отличительной особенностью стандарта POSIX):
word='tiger' first="${word%"${word#?}"}"
так как у вас есть
sedтег здесьsedответ:echo "$word" | sed -e "{ s/^\(.\).*// ; q }"играть по игре для тех, кто любит те (я делаю!):
{
s: запуск процедуры замены
/: начните указывать, что должно быть заменено^\(.\): захват первого символа в группе 1.*: убедитесь, что остальная часть линии будет в подмена/: начните указывать замену: вставить группу 1/: остальное отбрасывается;q: выходsedпоэтому он не будет повторять этот блок для других строк, если они есть.
}да, это было весело!
:)вы также можете использоватьgrepи т. д. Но если ты вbashthe${x:0:1}магия по-прежнему лучше решение ИМО. (Я потратил около часа, пытаясь использовать расширение переменной POSIX, чтобы сделать это, но не смог:()