我有这样一条路:
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/