Bash
Bash:如何從字元串中刪除字元,直到我擊中特定字元
基本上,我正在嘗試製作一個在某一時刻需要儲存座標的程序。在程序的一部分中,我需要將一個字元串分成兩部分,這樣我就能夠分別對這兩個字元串進行數學運算,然後重新連接這兩個字元串。需要如何在一種虛擬碼中更改字元串的範例:
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}
或任何等價物用於刪除第一個字元以刪除第一個或最後兩個數字,因為這些數字有時可能大於 99 或小於 10。請注意,我希望兩個數字之間的分隔符是一個空格。有人知道我該怎麼做嗎?
如果分隔符是單個空格,請使用前綴和後綴剝離。
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
。