围绕一个模式,不改变它,同时不区分大小写地搜索它

围绕一个模式,不改变它,同时不区分大小写地搜索它

抱歉,如果之前有人问过这个问题,但到目前为止我还没有找到任何东西。

事情是这样的:我有一个字符串和一个模式,并且想用方括号将字符串内的模式括起来。

虽然我想包围该模式,无论它是否区分大小写匹配,但我希望它的大小写与原始字符串中的大小写相同。

这是迄今为止我最好的尝试:

#!/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

你知道有什么技巧可以实现这一目标吗?我很高兴能得到任何帮助。

答案1

sed你也可以这样做。

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

答案2

如果你不介意 Perl,那就是:

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

相关内容