私はBash変数を持っています$word
。これは時々単語や文です。例:
word="tiger"
または:
word="This is a sentence."
変数で見つかった最初の文字だけに等しい新しいBash変数を作成するにはどうすればよいですか?たとえば、上記は次のようになります。
echo $firstletter
t
または:
echo $firstletter
T
私はBash変数を持っています$word
。これは時々単語や文です。例:
word="tiger"
または:
word="This is a sentence."
変数で見つかった最初の文字だけに等しい新しいBash変数を作成するにはどうすればよいですか?たとえば、上記は次のようになります。
echo $firstletter
t
または:
echo $firstletter
T
word="tiger"
firstletter=${word:0:1}
word=something
first=${word::1}
initial="$(echo $word | head -c 1)"
問題の説明で「最初に」と言うたびに、それhead
が解決策になる可能性があります。
これを行うための移植可能な方法は、パラメーター拡張(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
して、他の行がある場合にこのブロックが繰り返されないようにします。}
楽しかったです!など:)
を使用することもできますが、魔術を使用している場合でも、より優れたソリューションimoです。(私はそれを行うためにPOSIX変数展開を使用しようとして1時間ほど費やしましたが、できませんでした )grep
bash
${x:0:1}
:(
bash 4の使用:
x="test"
read -N 1 var <<< "${x}"
echo "${var}"