簡體   English   中英

在bash中的文件名字符串變量后替換字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM