首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shell如何通过替换路径字符串中的子字符串来获取新路径

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

Stack Overflow用户
提问于 2019-06-03 17:28:46
回答 1查看 67关注 0票数 0

我有一条这样的路径:

代码语言:javascript
复制
dirname=../2Reconnaissance-annoted/J39/IMG_2208.json

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

代码语言:javascript
复制
tr "\.json" "_json" <<<$dirname

问题是我得到了:

代码语言:javascript
复制
__/2Reconnaissance-annoted/J39/IMG_2208_json

而不是

代码语言:javascript
复制
../2Reconnaissance-annoted/J39/IMG_2208_json

请问你是怎么修的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-03 17:35:45

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

大多数shell直接支持替换:

代码语言:javascript
复制
dirname=${dirname/.json/_json}

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

如果您的shell不支持它,您可以使用sed

代码语言:javascript
复制
echo "$dirname" | sed -e 's/\.json$/_json/'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56424507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档