linux - Shell如何通过替换路径字符串中的子字符串来获取新路径

标签 linux shell command-line

我有这样一条路:

dirname=../2Reconnaissance-annoted/J39/IMG_2208.json

我想通过用“_json”替换“.json”来获得新路径,所以我尝试了这个命令:

tr "\.json" "_json" <<<$dirname

问题是我得到:

__/2Reconnaissance-annoted/J39/IMG_2208_json

而不是

../2Reconnaissance-annoted/J39/IMG_2208_json

请问如何解决?

最佳答案

tr 进行音译,即用字符替换字符,而不是用字符串替换字符串。你需要的是替代。

大多数 shell 支持直接替换:

dirname=${dirname/.json/_json}

(${dirname/%.json/_json} 只会替换字符串末尾的子字符串)。

如果你的 shell 不支持,你可以使用 sed:

echo "$dirname" | sed -e 's/\.json$/_json/'

关于linux - Shell如何通过替换路径字符串中的子字符串来获取新路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56424507/

相关文章:

windows - Windows 命令行中的 Jasmine

linux - 如何从 sftp 文件夹中获取最新文件

php - 如何知道一个命令已执行并完成执行另一个命令(ssh - php)

mysql - 基于mysql条目的shell脚本中的文件复制

linux - 如何在 Linux 中获取文件夹中的第二个最新文件

linux - 使用行字段排序命令输出

linux - 访问不包含桌面的监视器

linux - 使用 Jenkins 部署到 Linux 服务器,然后从 Windows 服务器运行 selenium 测试

linux - 你可以在 linux 中通过命令重命名 shell session 吗?

linux - 如果在命令行上输入参数,不想玩函数