抱歉,如果之前有人问过这个问题,但到目前为止我还没有找到任何东西。
事情是这样的:我有一个字符串和一个模式,并且想用方括号将字符串内的模式括起来。
虽然我想包围该模式,无论它是否区分大小写匹配,但我希望它的大小写与原始字符串中的大小写相同。
这是迄今为止我最好的尝试:
#!/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
。
你知道有什么技巧可以实现这一目标吗?我很高兴能得到任何帮助。
答案1
sed
你也可以这样做。
echo $STRING | sed -e "s/\($PATTERN\)/[\1]/Ig"
答案2
如果你不介意 Perl,那就是:
echo $STRING | perl -pe "s/($PATTERN)/[\1]/ig"