linux - 根据映射对字符串进行更改

标签 linux bash shell awk sed

我有以下字符串格式

str="aaa.[any_1].bbb.[any_2].ccc"

我有以下映射

map 1:

any_1 ==> 1
cny_1 ==> 2

map 2

any_2 ==> 1
bny_2 ==> 2
cny_2 ==> 3

考虑到上述映射,在 str 上执行的最佳命令是什么

$ command $str
aaa.1.bbb.1.ccc

最佳答案

将您的 map 文件转换为 sed 脚本:

 sed 's%^%s/%;s% ==> %/%;s%$%/g%' map?

将生成的脚本应用于输入字符串。您可以直接通过进程替换来完成:

sed 's%^%s/%;s% ==> %/%;s%$%/g%' map? | sed -f- <(echo "$str")

输出:

aaa.[1].bbb.[1].ccc

关于linux - 根据映射对字符串进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30026636/

相关文章:

linux - Zend Framework 2 中公用文件夹的最佳设置是什么?

android - iptables 在列表中移动规则

bash - `exec $FILE_DESCRIPTOR<>` 的语义?

linux - 在 bash 中循环遍历不相关的数字范围时使用文件中的行

algorithm - 使用 shell 脚本编写算法简介是个好主意吗

c - 简单的 shell linux C 实现,使用 freopen 重定向 stdout

linux - 如何使用 docker swarm 扩展具有多个暴露端口和多个卷的应用程序?

linux - 具有 kerberos 身份验证的 Kafka 控制台消费者

python - 如何在驻留在不同路径的包上使用 mod 选项 "-m"运行 Python3?

bash - 如何退出最近的 getopts 选项?