Perl 当一个输入字符串是另一个输入字符串的子字符串时替换字符串

Perl 当一个输入字符串是另一个输入字符串的子字符串时替换字符串,perl,sed,Perl,Sed,如何使用sed或perl替换多个输入字符串,其中一个字符串是另一个字符串的子字符串 例如: 输入:a[b][c] 预期输出:a.*b.*c. 我试着跟随,但是b和c之间的][把结果搞砸了 echo "a[b][c]" |sed -r 's/[\[\]]{1}|\[|\]/.*/g' a.*b.*.*c.* echo "a[b][c]" |sed -r 's/[\[\]]|\[|\]/.*/g' a.*b.*.*c.* 我希望有人能帮上忙,谢谢。我更喜欢p

如何使用
sed
perl
替换多个输入字符串,其中一个字符串是另一个字符串的子字符串

例如:

输入:
a[b][c]

预期输出:
a.*b.*c.

我试着跟随,但是b和c之间的
][
把结果搞砸了

echo "a[b][c]" |sed -r 's/[\[\]]{1}|\[|\]/.*/g'
a.*b.*.*c.*
echo "a[b][c]" |sed -r 's/[\[\]]|\[|\]/.*/g'
a.*b.*.*c.*
我希望有人能帮上忙,谢谢。我更喜欢
perl
解决方案,因为我必须把它融入其余的非共享代码中

echo "a[b][c]" | sed 's/]/.*/g; s/\[/.*/; s/\[//g'
输出:

a.*b.*c.* a、 *b.*c* 或者将
sed
替换为
perl-pe

这可能适合您(GNU-sed):


[
]
后接零或一个
[
替换为
*

echo a[b][c];perl-pe“s/([\[\]+)/./g”
产生
a.*b.*c.
这也是可能的:
echo'a[b][c]''''
sed -E 's/\[|\]\[?/.*/g' file