-1
我有一個數字,我從cat
這樣得到:「(number1,number2)」我想將這些值分成兩個不同的變量。將變量分成兩個使用SH/BASH
我有一個數字,我從cat
這樣得到:「(number1,number2)」我想將這些值分成兩個不同的變量。將變量分成兩個使用SH/BASH
一個快速和骯髒的方式做到這一點在一行是使用grep
:
read -r var1 var2 < <(grep -o '[0-9]*' file.txt)
不使用外部程序(因此速度更快),更健壯的方法是使用$BASH_REMATCH
:
if [[ "$(<file.txt)" =~ ^\((.*),(.*)\)$ ]]; then
var1="${BASH_REMATCH[1]}"
var2="${BASH_REMATCH[2]}"
fi
該方法的基本思想是,我們讀取文件內容爲一個字符串(帶"$(<file.txt)"
),然後我們立即測試對正則表達式(與=~
運營商)這個字符串。正則表達式包含兩個捕獲組,我們稍後從$BASH_REMATCH
數組中檢索。正則表達式通過在字符串的開始和結尾處忽略(
和)
來提取組,並找到將它們分開的,
。
我寧願使用'read'從文件中獲取數據:'read -r line
@gniourf_gniourf該方法的優點是什麼?你讀了一行嗎? – redneb
另一種快速而骯髒的方式:'IFS ='(,)'讀取-r _ var1 var2