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

Unix ksh replace 2nd to last character of a variable

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

var1=user/hYbMj8d@RM1

我只想替换倒数第二个字母,如果重要的话,它总是 M,然后将其更改为 O,并将其存储为新的它变成一个新变量。

因此新变量将包含:

var2=user/hYbMj8d@RO1

sed 试试这个:

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

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

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

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