2015-11-04 24 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