Ответ 1
Использовать замену строки внутри строки. Пример:
foo=" "
# replace first blank only
bar=${foo/ /.}
# replace all blanks
bar=${foo// /.}
Подробнее см. http://tldp.org/LDP/abs/html/string-manipulation.html.
Все, что мне нужно сделать, это заменить пробел () точкой (
.
) в строке в bash.
Я думаю, что это будет довольно просто, но я новичок, поэтому не могу понять, как изменить аналогичный пример для этого использования.
Использовать замену строки внутри строки. Пример:
foo=" "
# replace first blank only
bar=${foo/ /.}
# replace all blanks
bar=${foo// /.}
Подробнее см. http://tldp.org/LDP/abs/html/string-manipulation.html.
Вы можете использовать tr
, например:
tr " " .
Пример:
# echo "hello world" | tr " " .
hello.world
От man tr
:
ОПИСАНИЕ
Перевести, сжать и/или удалить символы из стандартного ввода, до стандартного вывода.
В bash вы можете сделать замену шаблонов в строке с конструкцией ${VARIABLE//PATTERN/REPLACEMENT}
. Используйте только /
, а не //
, чтобы заменить только первое вхождение. Шаблон - шаблон подстановочного знака, например файловые глобусы.
string='foo bar qux'
one="${string/ /.}" # sets one to 'foo.bar qux'
all="${string// /.}" # sets all to 'foo.bar.qux'
Попробуйте это
echo "hello world" | sed 's/ /./g'
Используйте замену параметров:
string=${string// /.}
Попробуйте это для путей:
echo \"hello world\"|sed 's/ /+/g'|sed 's/+/\/g'|sed 's/\"//g'
Он заменяет пространство внутри строки с двумя кавычками +
sing, затем заменяет знак +
обратным слэшем, а затем удаляет/заменяет двойные кавычки.
Мне пришлось использовать это, чтобы заменить пробелы на одном из моих путей в Cygwin.
echo \"$(cygpath -u $JAVA_HOME)\"|sed 's/ /+/g'|sed 's/+/\\/g'|sed 's/\"//g'