2016-08-29 89 views
4

我正在將一些sql查詢讀入db中的變量,並且它包含換行符(\ n)。我想用空格替換\ n(換行)。我嘗試了互聯網上提供的解決方案,但未能實現我想要的。這裏是嘗試:在bash中用空格替換 n(換行)

strr="my\nname\nis\nxxxx"; 
nw_strr=`echo $strr | tr '\n' ' '`; 
echo $nw_strr; 

我期望的輸出是「我的名字叫XXXX」,但我所得到的是「我的\ n名稱\ NIS \ NXXXX」。我也試過在互聯網上提供的其他解決方案,但沒有運氣:

nw_strr=`echo $strr | sed ':a;N;$!ba;s/\n/ /g'`; 

我在做些什麼嗎?

+5

對於初學者來說,書面'$ strr'沒有按」 t包含換行符,它包含文字反斜槓-N序列。試試'strr = $'我的\ nname \ nis \ nxxxx''來獲得正確的換行符。 –

回答

5

使用bash:

用空格替換所有換行符:

nw_strr="${strr//$'\n'/ }" 

用空格替換所有的字符串\n

nw_strr="${strr//\\n/ }" 
+1

適用於我,但正如John Kugelman在他上面的評論中提到的那樣,必須使用包含實際換行符的'$ strr'進行測試。例如'strr = $'我的\ nname \ nis \ nxxxx''。 – Charley

+0

我已經更新了我的答案。 – Cyrus

+0

第二個爲我工作。我猜所有的'\ n'都是從mysql讀取時的字符串。 – Prometheus