我需要在bash中的字符串中用点(.)替换空格( )。
.
我认为这将是相当简单的,但我是新的,所以我不知道如何修改类似的例子,以用于此用途。
你可以像这样使用tr:
tr
tr " " .
例子:
# echo "hello world" | tr " " . hello.world
从man tr:
man tr
< p > 描述   输出到标准输出
试试这个
echo "hello world" | sed 's/ /./g'
使用参数替换:
string=${string// /.}
在bash中,可以使用${VARIABLE//PATTERN/REPLACEMENT}构造在字符串中执行模式替换。只使用/而不使用//来替换第一次出现的情况。该模式是一个通配符模式,就像文件glob一样。
${VARIABLE//PATTERN/REPLACEMENT}
/
//
string='foo bar qux' one="${string/ /.}" # sets one to 'foo.bar qux' all="${string// /.}" # sets all to 'foo.bar.qux'
使用内联shell字符串替换。例子:
foo=" " # replace first blank only bar=${foo/ /.} # replace all blanks bar=${foo// /.}
更多细节参见http://tldp.org/LDP/abs/html/string-manipulation.html。
对路径试试这个:
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'
shellcheck推荐的解决方案如下:
string="Hello World" ; echo "${string// /.}"
output: Hello.World