文字列"rtcpOnNbActive true"
変数x
に格納されています。 「true」を部分文字列として抽出して変数に格納したい。これどうやってするの?
この方法を試してください:
y=$(echo $x | awk '{print $2}')
echo $y
echo $x
x
の値を表示します。awk '{print $2}'
は、以前に表示されたx
の2番目のフィールドを出力します。$(
...)
出力を保持し、それをy
に割り当てます。抽出する部分文字列の前にスペースが少なくとも1つある(そして、部分文字列にスペースが含まれていない)と仮定すると、単純なパラメーター展開でこれを行うことができます。
x="rtcpOnNbActive true"
y="${x##* }"
echo "[$y]"
出力
[true]
あなたは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の文字に一致し、$
は末尾を意味します
そのためにbash配列を使用することが可能です。例:
arr="(first second third)"
echo ${arr[1]}
read
ビルトインを使用できます
read -r _ y <<<"$x"
printf "%s\n" "$y"
true