用Bash中的句点替换空格

时间:2011-05-08 14:55:38

标签: string bash replace

我需要能够做的是用bash中的字符串中的点()替换空格(.)。

我认为这很简单,但我是新手,所以我无法弄清楚如何修改这个用途的类似例子。

7 个答案:

答案 0 :(得分:339)

使用内联shell字符串替换。例如:

foo="  "

# replace first blank only
bar=${foo/ /.}

# replace all blanks
bar=${foo// /.}

有关详细信息,请参阅http://tldp.org/LDP/abs/html/string-manipulation.html

答案 1 :(得分:68)

您可以使用tr,如下所示:

tr " " .

示例:

# echo "hello world" | tr " " .
hello.world

来自man tr

  

<强>描述
  翻译,挤压和/或删除标准输入中的字符,写入          标准输出。

答案 2 :(得分:46)

在bash中,您可以使用${VARIABLE//PATTERN/REPLACEMENT}构造在字符串中执行pattern replacement。仅使用/而非//仅替换第一次出现。该模式是一个通配符模式,如文件globs。

string='foo bar qux'
one="${string/ /.}"     # sets one to 'foo.bar qux'
all="${string// /.}"    # sets all to 'foo.bar.qux'

答案 3 :(得分:20)

试试这个

 echo "hello world" | sed 's/ /./g' 

答案 4 :(得分:5)

使用参数替换:

string=${string// /.}

答案 5 :(得分:2)

尝试使用路径:

echo \"hello world\"|sed 's/ /+/g'|sed 's/+/\/g'|sed 's/\"//g'

它用+单词替换双引号字符串中的空格,然后用反斜杠替换+符号,然后删除/替换双引号。

我必须使用它来替换Cygwin中我的一条路径中的空格。

echo \"$(cygpath -u $JAVA_HOME)\"|sed 's/ /+/g'|sed 's/+/\\/g'|sed 's/\"//g'

答案 6 :(得分:0)

shellcheck 推荐的解决方案如下:

string="Hello World" ; echo "${string// /.}"
output: Hello.World