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

时间:2019-06-03 09:28:45

标签: 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

请如何解决?

1 个答案:

答案 0 :(得分:1)

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Textv txt = (TextView)findViewById(R.id.tv2); Intent intent = getIntent(); Bundle bundle = intent.getExtras(); txt.setText(bundle.get("setTitle"); } 进行音译,即用字符代替字符,而不是用字符串代替字符串。您需要的是替代。

大多数shell直接支持替换:

tr

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

如果您的外壳不支持它,则可以使用${dirname/%.json/_json}

sed