bashパスで/を変更したいです。

bashパスで/を変更したいです。

/ を path/test/path/ から /replace に変更したいと思います。

つまり、予想される出力は =test=path=to=replace でなければなりません。

答え1

#! /usr/bin/env bash

A="/test/path/to/replace"
B="${A////=}"
echo "$B"

結果:

=test=path=to=replace

答え2

ここにはいくつかのオプションがあります。あなたはそれを使用することができますtr

new_path=$(echo '/test/path/to/replace' | tr '/' '=')

またはsed

new_path=$(echo '/test/path/to/replace' | sed 's/\//=/g')

答え3

ここではsedコマンドを使用できます。

sed "s/\//=/g"

コマンド出力の例:

pwd | sed "s/\//=/g"
echo "/test/path/to/replace" | sed "s/\//=/g"

ファイルの例(ファイル内のテキストで「/」を「=」に変更):

sed "s/\//=/g" file_name

変数の例(変数の内容の変更、「/」が「=」に変わります):

echo $var1 | sed "s/\//=/g"

もちろん、「基本」区切り記号(スラッシュ「/」)を減算記号「-」に置き換えることもできます。この場合、バックスラッシュ記号を使用せずに、より良い読みやすさを得ることができます。

sed "s-/-=-g"

指示(sedコマンドに慣れていない場合に備えて):

sed "s/\//=/g"
sed - stream editor (non-interactive command-line text editor)
s   - substitute sed command
/   - separators - first, third and fourth slash sign
\   - used for escaping second slash sign so that bash interprets second slash sign as litteral slash sign - not as separator)
/   - second slash sign; litteral slash sign (not separator) - term that we want to replace
=   - term that we want to get after replacement
g   - global sed command (replace all slashes, not just first one - without 'g' sed will replace only first slash in the path)


sed "-/-=-g"
All the same as in the previous explanation, except the two things:
1. We don't use escape sign (backslash) and
2. minus signs represent separators.

関連情報