最近我不得不编写一个在XenServer中解析虚拟机的小脚本,并且由于Windows XP或Windows Server 2008中虚拟机的名称主要是带有空格,我不得不修剪这些空格并用下划线替换它们_ 。我找到了一个简单的解决方案,使用sed这是一个很好的工具,当涉及字符串操作。
echo "This is just a test" | sed -e 's/ /_/g'
返回
This_is_just_a_test
答案 0 :(得分:152)
您只能使用shell执行此操作,无需tr
或sed
$ str="This is just a test"
$ echo ${str// /_}
This_is_just_a_test
答案 1 :(得分:13)
这是边缘编程,但请考虑使用tr:
$ echo "this is just a test" | tr -s ' ' | tr ' ' '_'
应该这样做。第一次调用会压缩空格,第二次调用会替换为下划线。您可能需要添加TAB和其他空格字符,这仅适用于空格。