У меня есть переменная Bash $word
, которая иногда является словом или предложением, например:
word="tiger"
Или:
word="This is a sentence."
Как создать новую переменную Bash, равную только первой букве, найденной в переменной? Например, приведенное выше будет:
echo $firstletter
t
Или:
echo $firstletter
T
-c
в заголовке POSIX нет опции: < unix.com/man-page/posix/1/head >.${word:0:1}
или${word::1}
.echo "$word" | fold -w1 | head -n 1
,printf '%.1s' "$X"
или ,printf '%c' "$X"
но это все подчинено одной ст. Мульти проделки байт символов.head -c n
, упс.echo "fábio" | head -c 2
даетf�
, так что это еще одна проблема, я думаю.word="tiger" firstletter=${word:0:1}
источник
word=something first=${word::1}
источник
first
устанавливается букваs
. Вы можете увидеть это с помощьюecho $s
. Если это не сработает для вас и вам нужна помощь в отладке, скопируйте и вставьте набранные вами команды и их вывод.Переносимый способ сделать это - использовать расширение параметров (это функция POSIX) :
$ word='tiger' $ echo "${word%"${word#?}"}" t
источник
С вырезом:
word='tiger' echo "${word}" | cut -c 1
источник
Поскольку у вас есть
sed
тег, вотsed
ответ:echo "$word" | sed -e "{ s/^\(.\).*/\1/ ; q }"
Игра за игрой для тех, кому нравится (я люблю!):
{
s
: начать процедуру замены/
: Начните указывать, что нужно заменить^\(.\)
: захватить первого персонажа в группе 1.*
:, убедитесь, что остальная часть строки будет в замене/
: начать указывать замену\1
: вставить группу 1/
: Остальное отбрасывается;
q
: Выйти,sed
чтобы не повторять этот блок для других строк, если они есть.}
Что ж, было весело!
:)
Вы можете также использоватьgrep
и т.д. , но если вы находитесь вbash
в${x:0:1}
магики еще лучшее решение имо. (Я потратил около часа, пытаясь использовать для этого расширение переменной POSIX, но не смог:(
)источник
Используя bash 4:
x="test" read -N 1 var <<< "${x}" echo "${var}"
источник