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