Bash

包圍一個模式,而不是改變它,同時不區分大小寫地搜尋它

  • November 19, 2015

對不起,如果以前有人問過這個問題,但到目前為止我還沒有找到任何東西。

事情是這樣的:我有一個字元串和一個模式,並且想用括號將字元串內的模式包圍起來。

雖然我想將模式包圍起來,不管它是否區分大小寫,但我希望它與原始字元串中的大小寫相同。

到目前為止,這是我最好的嘗試:

#!/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兩種模式Bb

你知道實現這一目標的任何技巧嗎?我很高興有任何幫助。

你也可以這樣做sed

echo $STRING | sed -e "s/\($PATTERN\)/[\1]/Ig"

如果你不介意 Perl,它是:

echo $STRING | perl -pe "s/($PATTERN)/[\1]/ig"

引用自:https://unix.stackexchange.com/questions/244163