2012-05-07 3 views
7

私はそれをたくさん探しています。私のOSXのターミナルで、私のbashスクリプトでBash:文字列をosx bashの新しい行で置き換えるにはどうすればいいですか?

echo "Replace <newLine> it by <newLine> NEWLINE <newLine> in my OSX terminal <newLine> and bash script" | sed -e 's/<newLine>/\n/g' 

作品:私は、この行をしたいです。これにはsedを使用できませんか?もう1つのラインソリューションはありますか? - 構文はのsedの代替構文に似ていますが、あなたは、文字列のすべてのインスタンスを置き換える示すためにダブルスラッシュ(//)を使用

STR="Replace <newLine> it by <newLine> NEWLINE <newLine> in my OSX terminal <newLine> and bash script" 
$ echo ${STR//<newLine>/\\n} 
Replace \n it by \n NEWLINE \n in my OSX terminal \n and bash script 

$ echo -e ${STR//<newLine>/\\n} 
Replace 
it by 
NEWLINE 
in my OSX terminal 
and bash script 

ここで簡単に説明:唯一のbashを使用して

+0

OS Xは'これをサポートsed'していますか?それは0ではなく文字「o」です。改行の8進値は12です。これはLinuxでも動作しますが( '\ n'も同様です)。 –

+0

@DennisWilliamsonは私のbashで動かない:) – Rodrigo

+0

笑、それで私のOS X 'sed'で動作しない。 – Rodrigo

答えて

4

。それ以外の場合は、文字列の最初のオカレンスのみが置き換えられます。ここで

1

これはあなたのために働くかもしれない:

echo "Replace <newLine> it by <newLine> NEWLINE <newLine> in my OSX terminal <newLine> and bash script" | 
sed 'G;:a;s/<newLine>\(.*\(.\)\)$/\2\1/;ta;s/.$//' 
Replace 
it by 
NEWLINE 
in my OSX terminal 
and bash script 

EDIT:OSXは複数のコマンドを受け付けません。 here

echo "Replace <newLine> it by <newLine> NEWLINE <newLine> in my OSX terminal <newLine> and bash script" | 
sed -e 'G' -e ':a' -e 's/<newLine>\(.*\(.\)\)$/\2\1/' -e 'ta' -e 's/.$//' 
Replace 
it by 
NEWLINE 
in my OSX terminal 
and bash script 

さらに別の方法: `sedのさん/ /\ O12/g'`:

echo "Replace <newLine> it by <newLine> NEWLINE <newLine> in my OSX terminal <newLine> and bash script" | 
sed $'s|<newLine>|\\\n|g' 
Replace 
it by 
NEWLINE 
in my OSX terminal 
and bash script 
+0

笑、申し訳ありませんが、これはOSXのbashでは動作しません。 – Rodrigo

+0

@Rodrigoご返信ありがとうございます、OSXはGNU sedとして複数のコマンドを受け入れていないようです。この編集によりOSXに準拠させる必要があります。 – potong

関連する問題