web-dev-qa-db-ja.com

文字列変数から2番目の単語を抽出する

文字列"rtcpOnNbActive true"変数xに格納されています。 「true」を部分文字列として抽出して変数に格納したい。これどうやってするの?

11
Pratibha Jain

この方法を試してください:

y=$(echo $x | awk '{print $2}')
echo $y
  • echo $xxの値を表示します。
  • awk '{print $2}'は、以前に表示されたxの2番目のフィールドを出力します。
  • $(...)出力を保持し、それをyに割り当てます。
21
jherran

抽出する部分文字列の前にスペースが少なくとも1つある(そして、部分文字列にスペースが含まれていない)と仮定すると、単純なパラメーター展開でこれを行うことができます。

x="rtcpOnNbActive     true"
y="${x##* }"
echo "[$y]"

出力

[true]
9
PM 2Ring

あなたはawkを使うことができます:

echo "rtcpOnNbActive         true" | awk '{print $NF}'
true

NF現在のレコードのフィールド数

sedの使用:

echo "rtcpOnNbActive         true" | sed 's/.* //g'
true

文字列式を使用:

 a="rtcpOnNbActive         true"
 echo ${a##* }
 true

grepを使用:

 echo "rtcpOnNbActive         true" | grep -Eo "[a-z]+$"
 true

-oは完全一致のみを提供し、[a-z]+はa-zの文字に一致し、$は末尾を意味します

4
Hackaholic

そのためにbash配列を使用することが可能です。例:

arr="(first second third)"
echo ${arr[1]}
3
kenorb

readビルトインを使用できます

read -r _ y <<<"$x"
printf "%s\n" "$y"
true
2
iruvar