7

私はそれをたくさんグーグルしています。私はこの行だけが欲しいです:

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

私のosxターミナルと私のbashスクリプトで動作します。これには使えないsedの?別のワンラインソリューションはありますか?

4

3 に答える 3

18

こちらはsedを使用しています

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

そして、ここに理由を説明するブログ投稿があります-https ://nlfiedler.github.io/2010/12/05/newlines-in-sed-on-mac.html

于 2012-05-07T21:03:41.967 に答える
4

bashのみを使用する:

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

ここでの簡単な説明-構文はsedの置換構文に似てい//ますが、文字列のすべてのインスタンスを置換することを示すために二重スラッシュ()を使用します。それ以外の場合は、文字列の最初の出現のみが置き換えられます。

于 2012-05-07T21:00:50.103 に答える
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

編集:OSXは複数のコマンドを受け入れませんここを参照してください

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

さらに別の方法:

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
于 2012-05-07T23:10:42.810 に答える