[英]Replace character after file name string variable in bash
我在bash中有如下字符串:
string=P001_WA05_1_i5-_i7-SI_GA_A5_1_S1_*_
我想將W[[:alpha:]]+([0-9])
后的_[0-9]_
替換為星號,將[0-9]_[[:alpha:]][0-9]
后SI_GA_[[:alpha:]]+([0-9])
用星號。
該字符串的期望輸出為P001_WA05*i5-_i7-SI_GA_A5_*_*_
如何才能做到這一點? 我在正則表達式中包含了上述格式,但是我不確定如何在顯示的模式后用星號替換顯示的值。
謝謝傑克
您可以通過${BASH_REMATCH[1]}
等重用括號包圍的匹配模式作為反向引用。 然后,您可以說類似:
string=P001_WA05_1_i5-_i7-SI_GA_A5_1_S1_*_
if [[ $string =~ (.*W[[:alpha:]][0-9]+)_[0-9]_(.*SI_GA_[[:alpha:]]+[0-9]_)[0-9]_[[:alpha:]][0-9](.*) ]]; then
string="${BASH_REMATCH[1]}*${BASH_REMATCH[2]}*${BASH_REMATCH[3]}"
fi
echo "$string"
第一個子模式.*W[[:alpha:]][0-9]+
與P001_WA05
匹配,第二.*SI_GA_[[:alpha:]]+[0-9]_
與SI_GA_A5_
,依此類推。 。
然后,您可以將這些子字符串與替換字符串連接起來:“ *
”。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.