Linux将空格替换为字符串的换行符

时间:2015-11-04 23:15:27

标签: linux bash

我有一个字符串,我正在尝试将空格替换为换行符

我原来的字符串

xxx xxx xxx xxx

如果我使用以下命令,那么它可以正常工作

echo $string | sed 's/ /\n/g'

但是,如果我想将新字符串分配给另一个变量,例如

newString=`echo $string | sed 's/ /\n/g'`
echo $newString

它不起作用......

有谁知道为什么?

1 个答案:

答案 0 :(得分:4)

问题在于:

echo $newString

表示“获取$newString的值,执行单词拆分和文件名扩展,并将结果作为零个或多个参数传递给echo”。分词$'xxx\nxxx\nxxx\nxxx'的结果是四个单独的xxx参数,因此您的命令等于echo xxx xxx xxx xxx

相反,你想要:

echo "$newString"

表示“取$newString的值并将其作为单个参数传递给echo”。

顺便提一下,如果您只是替换字符串中的字符,则无需使用sed。 Bash支持这作为内置功能。而不是:

newString=`echo $string | sed 's/ /\n/g'`

你可以这样写:

newString="${string// /$'\n'}"

(一般模式为${variable_name//string_to_replace/replacement_string}