如何用方括号替换方括号内的字母和数字以及sed中括号外的字母?

时间:2013-03-07 22:08:59

标签: linux string bash replace sed

我如何做到这一点,例如:

replace: today_is_sunny[0F]
with: today_is_sunny_F[0]

请记住,方括号内的零可以是任何数字,方括号内的字母始终为F.

谢谢!

5 个答案:

答案 0 :(得分:0)

我认为这应该可以解决问题

sed 's|today_is_sunny\[\([0-9]\)F\]|today_is_sunny_F\[\1\]|'

答案 1 :(得分:0)

您可以尝试以下操作:

echo "today_is_sunny[0F]" | sed 's/\[\([0-9]\)F\]/_F\[\1\]/g'

答案 2 :(得分:0)

这条短线应该可以解决你的问题:

sed 's/\[/_F&/;s/.]/]/' file

e.g。

kent$  echo "today_is_sunny[0F]"|sed 's/\[/_F&/;s/.]/]/'
today_is_sunny_F[0]

答案 3 :(得分:0)

考虑任何数字:

sed -e 's;\(\[\)\([0-9]\)F;_F\1\2;'

用法可能是:

echo 'today_is_sunny[0F]' | sed -e 's;\(\[\)\([0-9]\)F;_F\1\2;'

答案 4 :(得分:0)

使用命名字符类的示例:

sed -r 's/\[([[:digit:]])([[:alpha:]])\]/\2[\1]/'