web-dev-qa-db-ja.com

スペースをバッシュのピリオドで置き換える

できることは、bashの文字列の中のspace()をドット(.)に置き換えることです。

これは非常に簡単なことだと思いますが、私は新しいので、この使用法のために同様の例を変更する方法を理解することはできません。

197
Brian Leishman

インラインシェル文字列置換を使用してください。例:

foo="  "

# replace first blank only
bar=${foo/ /.}

# replace all blanks
bar=${foo// /.}

詳しくは http://tldp.org/LDP/abs/html/string-manipulation.html を参照してください。

340
Brian Clapper

このようにtrを使用できます。

tr " " .

例:

# echo "hello world" | tr " " .
hello.world

man trから:

DESCRIPTION
標準入力から文字を変換、圧縮、削除して標準出力に書き出します。

68
aioobe

Bashでは、${VARIABLE//PATTERN/REPLACEMENT}構文を使用して文字列内で パターン置換 を実行できます。最初の出現箇所のみを置き換えるには、/ではなく//のみを使用してください。パターンはファイルグロブのようなワイルドカードパターンです。

string='foo bar qux'
one="${string/ /.}"     # sets one to 'foo.bar qux'
all="${string// /.}"    # sets all to 'foo.bar.qux'
46
Gilles

これを試して

 echo "hello world" | sed 's/ /./g' 
20
Rob

パラメータ置換を使用します。

string=${string// /.}
5
Fritz G. Mehner

パスにこれを試してください:

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'
2
dsrdakota