2015-11-04 29 views
0

我有一个字符串,我试图取代的空间来换行Linux的替代空间,换行的字符串

我原始的字符串

xxx xxx xxx xxx 

如果我使用下面的命令,然后它工作

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

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

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

它不工作...

有谁知道为什么吗?

回答

3

的问题是这样的:

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'` 

,你可以这样写:

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

+0

非常感谢它的工作原理 – user2597504

+0

@ user2597504:!不客气! – ruakh