在bash中用(下划线)replace空白的最简单的方法

最近我不得不写一些在XenServer中分析虚拟机的脚本,因为虚拟机的名字大多是在Windows XP或Windows Server 2008的空白处,所以我不得不修剪这些空格,并用下划线_replace它们。 我发现一个简单的解决scheme,使用sed,这是一个伟大的工具,当涉及到string操作。

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

回报

 This_is_just_a_test 

你可以只使用shell,不需要trsed

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

这是边界编程,但看看使用tr :

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

应该这样做。 第一个调用挤压空间,第二个replace为下划线。 您可能需要添加TAB和其他空白字符,这仅适用于空格。