最近、XenServerでVMを解析する小さなスクリプトを作成する必要がありました。VMの名前は、たとえばWindows XPまたはWindows Server 2008でほとんど空白であるため、これらの空白を削除する必要がありましたそして、それらをアンダースコアに置き換えます_。sedを使用してこれを行う簡単なソリューションが見つかりました。
echo "This is just a test" | sed -e 's/ /_/g'
返却値
This_is_just_a_test
tr
やsed
は不要で、シェルのみを使用して実行できます
$ str="This is just a test"
$ echo ${str// /_}
This_is_just_a_test
これは境界線プログラミングですが、 tr の使用を検討してください。
$ echo "this is just a test" | tr -s ' ' | tr ' ' '_'
それを行う必要があります。最初の呼び出しはスペースを詰め込み、2番目の呼び出しはアンダースコアに置き換えます。おそらくタブや他の空白文字を追加する必要があります。これはスペース専用です。