Unix ksh替换变量的倒数第二个字符

时间:2016-04-13 12:33:34

标签: unix replace ksh

我在使用Korn Shell的UNIX系统上。我是UNIX初学者。这就是我想要做的事情:

var1=user/hYbMj8d@RM1

我想只替换第二个字母到最后一个字母,如果重要的话,它将始终为M,并将其更改为O,并将其作为新的存储在一个新的变量。

所以新变量将包含:

var2=user/hYbMj8d@RO1

1 个答案:

答案 0 :(得分:1)

使用sed

尝试此操作

sed 's/M\(.$\)/O\1/'

var1中存储已更新的var2的完整解决方案:

 var2=`echo $var1 | sed 's/M\(.$\)/O\1/'`

说明:使用sed替换命令:s/<find>/<replace>/。它搜索M.$模式,其中$是EOL - 所以它将是结尾的第二个字符。然后它会在M个字符后转义余数(转义括号 - 在sed捕获组中应该转义)并在O后用M字符和余数替换它 - 捕获的内容(它是特殊参考\1 - 被捕获的组#1)。