Bash:特定の文字が表示されるまで文字列から文字を削除する方法

Bash:特定の文字が表示されるまで文字列から文字を削除する方法

デフォルトでは、1点で座標を保存する必要があるプログラムを作成しようとしています。プログラムの一部では、2つの文字列に対して個別に数学演算を実行してから、2つの文字列を再結合できるように、文字列を2つの文字列に分割する必要があります。擬似コードで文字列を変更する方法の例が必要です。

Var1="10 17"
separate Var1 into Var2 and Var3
#using the command echo "$Var1,Var2,Var3" here would output 10 17,10,17
#preform math on Var2 and/or Var3 here
Var1="$Var2 $Var3"

問題の一部は、私はこれを行うことができないということです

Var2=${Var1::-2}

または、最初または最後の2桁の数字を削除するには、最初の文字を削除してください。これらの数字は時々99より大きいか10より小さいかもしれません。 2つの数字の間の区切り文字を空白に設定したいと思います。どうすればいいのか知っている人はいますか?

ベストアンサー1

区切り文字が単一の空白の場合プレフィックスとサフィックスの削除

before_the_first_space="${Var1%% *}"
after_the_first_space="${Var1# *}"
before_the_last_space="${Var1%* }"
after_the_last_space="${Var1##* }"

または以下を使用してください。噴射引用符のない変数の置換について。これは、空白の各シーケンスを区切り文字として扱い、結果を配列に入れます。set -f障害を負うワイルドカード拡張set +f再びオンにしてください。

set -f
parts=($Var1)
set +f
echo "${parts[0]}"

または以下を使用してください。read組み込み変数を配列に分割します。read標準入力から読みますのでご使用ください。ここにある文字列変数の内容を入力として渡します。

read -r -a parts <<<"$Var1"

引用しない代替方法とread値ベースの分割方法IFS

おすすめ記事