できることは、bashの文字列の中のspace()をドット(.
)に置き換えることです。
これは非常に簡単なことだと思いますが、私は新しいので、この使用法のために同様の例を変更する方法を理解することはできません。
インラインシェル文字列置換を使用してください。例:
foo=" "
# replace first blank only
bar=${foo/ /.}
# replace all blanks
bar=${foo// /.}
詳しくは http://tldp.org/LDP/abs/html/string-manipulation.html を参照してください。
このようにtr
を使用できます。
tr " " .
例:
# echo "hello world" | tr " " .
hello.world
man tr
から:
DESCRIPTION
標準入力から文字を変換、圧縮、削除して標準出力に書き出します。
Bashでは、${VARIABLE//PATTERN/REPLACEMENT}
構文を使用して文字列内で パターン置換 を実行できます。最初の出現箇所のみを置き換えるには、/
ではなく//
のみを使用してください。パターンはファイルグロブのようなワイルドカードパターンです。
string='foo bar qux'
one="${string/ /.}" # sets one to 'foo.bar qux'
all="${string// /.}" # sets all to 'foo.bar.qux'
これを試して
echo "hello world" | sed 's/ /./g'
パラメータ置換を使用します。
string=${string// /.}
パスにこれを試してください:
echo \"hello world\"|sed 's/ /+/g'|sed 's/+/\/g'|sed 's/\"//g'
二重引用符で囲まれた文字列内のスペースを+
記号で置き換え、次に+
記号を円記号で置き換え、次に二重引用符を削除または置き換えます。
私はこれを使ってCygwinのパスの1つにあるスペースを置き換える必要がありました。
echo \"$(cygpath -u $Java_HOME)\"|sed 's/ /+/g'|sed 's/+/\\/g'|sed 's/\"//g'