2016-08-29 17 views
4

dbからの変数にいくつかのSQLクエリを読み込んでいて、改行文字(\ n)が含まれています。 \ n(改行)をスペースで置き換えたい。私はインターネット上で提供されるソリューションを試みたが、私が望むものを達成するのに失敗した。ここでは試したものです: n(改行)をbashの空白に置き換えます。

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

私の所望の出力は、「私の名前はXXXXです」ですが、私は取得していますが「私の\ NNAME \ NIS \ nxxxx」です。私はまた、インターネットで提供される他の解決策を試してみましたが、運:

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

私が何かウォンをやってんだろうか?スペースですべての文字列に\nを交換し

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

を::

は、スペースですべての改行を交換します。bashで

+5

'「$ strr' doesnの改行を含んでいれば、それは文字通りのバックスラッシュ-Nシーケンスを含んでいます。適切な改行を得るには、 'strr = $ 'my \ nname \ nis \ nxxxx'を試してください。 –

答えて

5

書かれたとして、手始めに

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

私のために働いていますが、John Kugelmanが上記のコメントで言及しているように、これは実際の改行を含む '$ strr'でテストする必要があります。例えば ​​'strr = $ 'my \ nname \ nis \ nxxxx'のようになります。 – Charley

+0

私は自分の答えを更新しました。 – Cyrus

+0

2番目のものが私のために働く。私は '\ n'がmysqlから読み込み中に文字列として来ると思います。 – Prometheus

関連する問題