最近我需要编写一个小脚本来解析 XenServer 中的虚拟机,由于虚拟机的名称通常包含空格,例如 Windows XP 或 Windows Server 2008,因此我需要去除这些空格并将它们替换为下划线 _ 。我发现使用 sed 是一个简单的解决方案,当涉及到字符串操作时它是一个很棒的工具。
echo "This is just a test" | sed -e 's/ /_/g'
返回值
This_is_just_a_test
还有其他实现这个功能的方法吗?
最近我需要编写一个小脚本来解析 XenServer 中的虚拟机,由于虚拟机的名称通常包含空格,例如 Windows XP 或 Windows Server 2008,因此我需要去除这些空格并将它们替换为下划线 _ 。我发现使用 sed 是一个简单的解决方案,当涉及到字符串操作时它是一个很棒的工具。
echo "This is just a test" | sed -e 's/ /_/g'
返回值
This_is_just_a_test
还有其他实现这个功能的方法吗?
你可以仅使用shell命令来做到,不需要使用tr
或sed
$ str="This is just a test"
$ echo ${str// /_}
This_is_just_a_test
${str//[^a-zA-Z0-9]/_}
;无论哪种方式,如果你不坚持使用纯POSIX shell,则应使用可用的功能。 - guns$ echo "this is just a test" | tr -s ' ' | tr ' ' '_'