Bash
包圍一個模式,而不是改變它,同時不區分大小寫地搜尋它
對不起,如果以前有人問過這個問題,但到目前為止我還沒有找到任何東西。
事情是這樣的:我有一個字元串和一個模式,並且想用括號將字元串內的模式包圍起來。
雖然我想將模式包圍起來,不管它是否區分大小寫,但我希望它與原始字元串中的大小寫相同。
到目前為止,這是我最好的嘗試:
#!/bin/bash STRING="ABCBD" PATTERN="b" echo $STRING | sed "s/$PATTERN/[$PATTERN]/Ig"
輸出是
A[b]C[b]D
. 但是,我希望它是A[B]C[B]D
.如果模式
B
不是b
,則輸出也應該是A[B]C[B]D
。如果字元串
abcbd
不是ABCBD
,則輸出應該是a[b]c[b]d
兩種模式B
或b
。你知道實現這一目標的任何技巧嗎?我很高興有任何幫助。
你也可以這樣做
sed
。echo $STRING | sed -e "s/\($PATTERN\)/[\1]/Ig"
如果你不介意 Perl,它是:
echo $STRING | perl -pe "s/($PATTERN)/[\1]/ig"