如何获取Bashvariables的第一个字母?
我有一个Bashvariables, $word
,有时是一个单词或句子,例如:
word="tiger"
要么:
word="This is a sentence."
我怎样才能使一个新的Bashvariables,只有在variables中find的第一个字母相等? 例如,以上将是:
echo $firstletter t
要么:
echo $firstletter T
initial="$(echo $word | head -c 1)"
每当你在问题描述中说“第一”, head
就是一个可能的解决scheme。
word="tiger" firstletter=${word:0:1}
word=something first=${word::1}
既然你有一个sed
标签这里是一个sed
答案:
echo "$word" | sed -e "{ s/^\(.\).*/\1/ ; q }"
为那些喜欢那些(我做!)玩的玩:
{
-
s
:开始替代例程-
/
:开始指定要replace的内容 -
^\(.\)
:捕获组1中的第一个字符 -
.*
:,确保行的其余部分将被replace -
/
:开始指定replace -
\1
:插入组1 -
/
:剩下的被丢弃;
-
-
q
:退出sed
这样如果有的话,其他行不会重复这个块。
}
那很好玩! :)
你也可以使用grep
等,但是如果你在bash
${x:0:1}
magick仍然是更好的解决scheme。 (我花了一个小时试图使用POSIXvariables扩展来做到这一点,但不能:(
)
一个便携的方法是使用参数扩展(这是一个POSIXfunction) :
word='tiger' first="${word%%"${word#?}"}"
使用bash 4:
x="test" read -N 1 var <<< "${x}" echo "${var}"