Как получить первую букву в переменной 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
: Quitsed
поэтому он не будет повторять этот блок для других строк, если они есть.
}
да, это было весело! :)
вы также можете использовать grep
и т. д. Но если ты в bash
на ${x:0:1}
магия по-прежнему лучше решение ИМО. (Я потратил около часа, пытаясь использовать расширение переменной POSIX для этого, но не смог :(
)