web-dev-qa-db-ja.com

bashで空白を(アンダースコア)_で置き換える最も簡単な方法

最近、XenServerでVMを解析する小さなスクリプトを作成する必要がありました。VMの名前は、たとえばWindows XPまたはWindows Server 2008でほとんど空白であるため、これらの空白を削除する必要がありましたそして、それらをアンダースコアに置き換えます_。sedを使用してこれを行う簡単なソリューションが見つかりました。

echo "This is just a test" | sed -e 's/ /_/g'

返却値

This_is_just_a_test
83
flazzarini

trsedは不要で、シェルのみを使用して実行できます

$ str="This is just a test"
$ echo ${str// /_}
This_is_just_a_test
160
ghostdog74

これは境界線プログラミングですが、 tr の使用を検討してください。

$ echo "this is just a test" | tr -s ' ' | tr ' ' '_'

それを行う必要があります。最初の呼び出しはスペースを詰め込み、2番目の呼び出しはアンダースコアに置き換えます。おそらくタブや他の空白文字を追加する必要があります。これはスペース専用です。

13
unwind