Ответ 1
Вы можете сделать это, используя только оболочку, не нужно tr
или sed
$ str="This is just a test"
$ echo ${str// /_}
This_is_just_a_test
Недавно мне пришлось написать немного script, которые анализировали виртуальные машины в XenServer, и поскольку имена виртуальных машин в основном состоят из белых пробелов, например, в Windows XP или Windows Server 2008, мне пришлось обрезать эти пробелы и заменить их на подчеркивания _. Я нашел простое решение для этого, используя sed, который является отличным инструментом, когда дело доходит до строковых манипуляций.
echo "This is just a test" | sed -e 's/ /_/g'
возвращает
This_is_just_a_test
Вы можете сделать это, используя только оболочку, не нужно tr
или sed
$ str="This is just a test"
$ echo ${str// /_}
This_is_just_a_test
Это пограничное программирование, но посмотрите на tr:
$ echo "this is just a test" | tr -s ' ' | tr ' ' '_'
Должен это сделать. Первый вызов сжимает пространства вниз, второй заменяет знак подчеркивания. Вероятно, вам нужно добавить TAB и другие символы пробелов, это только для пробелов.