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?
Note that tr -d "[:space:]" removes both horizontal and vertical whitespace characters (=newlines). To remove just horizontal whitespace characters simply use tr -d " " .
Use sub(/\^/, " ", str) to replace with space, and gsub(/\^/, " ", str) to replace every occurrence.
Simple SED commands are: sed s/ */ /g This will replace any number of spaces with a single space. sed s/ $// This will replace any single space at the end of the line with nothing.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With