Ksh 中的动态搜索和替换

Ksh 中的动态搜索和替换

工作中的机器遵循恒定的命名模式:

主机[域]_[id]

其中,[domain] 是开发计算机的“d”和生产计算机的“p”,[id] 是每台计算机都不同的 2 位字符串。例如:“hostp_a1”或“hostd_g5”。

现在,由于新的公司政策,我们已将两个域分开,并且必须为开发计算机附加后缀“.dev”,为生产计算机附加后缀“.prd”。我以前的机器现在称为“hostp_a1.prd”和“hostd_g5.dev”

我不想改变我的旧习惯,所以我想知道 Ksh 是否有办法动态地为我做到这一点。这是一个可以为我完成此操作的 sed 脚本:

sed -e 's/host\([dp]\)_\(..\)/host\1_\2.\1/' -e 's/p$/prd/' -e 's/d$/dev/'

以下是我想到的一些解决方案:

  • 正则表达式别名:

    如果我能做类似的事情alias host[dp]_..='....

  • 触发器:

    每次输入命令时触发器都会执行 sed。可能会有点影响性能,但我不在乎,因为它只是交互式的。

Ksh 有什么办法可以做到这一点吗?我使用旧版本可能没有帮助Version M-11/16/88i。也许其他 shell 可以做到这一点?

(只要我们这样做,我目前正在学习,sed所以如果有人有更好的 sed 命令建议,请这样做。谢谢)。

相关内容