96

私はBash変数を持っています$word。これは時々単語や文です。例:

word="tiger"

または:

word="This is a sentence."

変数で見つかった最初の文字だけに等しい新しいBash変数を作成するにはどうすればよいですか?たとえば、上記は次のようになります。

echo $firstletter
t

または:

echo $firstletter
T
4

7 に答える 7

319
word="tiger"
firstletter=${word:0:1}
于 2012-04-18T21:46:10.650 に答える
78
word=something
first=${word::1}
于 2012-04-18T22:03:07.510 に答える
43
initial="$(echo $word | head -c 1)"

問題の説明で「最初に」と言うたびに、それheadが解決策になる可能性があります。

于 2012-04-18T21:44:00.690 に答える
15

これを行うための移植可能な方法は、パラメーター拡張(POSIX機能)を使用することです。

$ word='tiger'
$ echo "${word%"${word#?}"}"
t
于 2017-07-08T16:45:24.547 に答える
7

カット付き:

word='tiger'
echo "${word}" | cut -c 1
于 2018-08-30T14:59:25.437 に答える
2

sedここにタグがあるので、sed答えは次のとおりです。

echo "$word" | sed -e "{ s/^\(.\).*/\1/ ; q }"

それらを楽しむ人のためにプレイバイプレイ(私はそうです!):

{

  • s:置換ルーチンを開始します
    • /:何を置き換えるかを指定し始める
    • ^\(.\):グループ1の最初のキャラクターをキャプチャします
    • .*:、行の残りの部分が置換されることを確認してください
    • /:置換の指定を開始します
    • \1:グループ1を挿入
    • /:残りは破棄されます;
  • q:終了sedして、他の行がある場合にこのブロックが繰り返されないようにします。

}

楽しかったです!など:)を使用することもできますが、魔術を使用している場合でも、より優れたソリューションimoです。(私はそれを行うためにPOSIX変数展開を使用しようとして1時間ほど費やしましたが、できませんでした )grepbash${x:0:1}:(

于 2017-03-01T18:00:16.857 に答える
1

bash 4の使用:

x="test"
read -N 1 var <<< "${x}"
echo "${var}"
于 2017-10-22T05:40:42.167 に答える