The easiest way to replace white spaces with (underscores) _ in bash

flazzarini picture flazzarini · Nov 10, 2009 · Viewed 111.6k times · Source

recently I had to write a little script that parsed VMs in XenServer and as the names of the VMs are mostly with white spaces in e.g Windows XP or Windows Server 2008, I had to trim those white spaces and replace them with underscores _ . I found a simple solution to do this using sed which is great tool when it comes to string manipulation.

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

returns

This_is_just_a_test

Are there other ways to accomplish this?

Answer

ghostdog74 picture ghostdog74 · Nov 10, 2009

You can do it using only the shell, no need for tr or sed

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