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