2012-05-07 16 views
7

Często googlam. Chcę tylko, aby ta linia:Bash: Jak mogę zastąpić ciąg przez nową linię w boksie osx?

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

działa w moim terminalu osx iw moim skrypcie basha. Nie mogę użyć do tego sed? Czy istnieje jeszcze jedno rozwiązanie jednej linii?

+0

Does OS X 'sed' wesprzeć w ten sposób:' sed „s//\ O12/g''? To litera "o" zamiast zera. Wartość ósemkowa dla nowego wiersza wynosi 12. Działa na Linuksie (podobnie jak "\ n"). –

+0

@DennisWilliamson nie działa w mojej bash :) – Rodrigo

+0

lol, więc nie działa z moim OS X 'sed' :) – Rodrigo

Odpowiedz

4

Korzystanie tylko 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 

szybkie wyjaśnienie tutaj - składnia jest podobna do składni zastępczej sed, ale użyć podwójny ukośnik (//), aby wskazać, zastępując wszystkie wystąpienia ciągu. W przeciwnym razie zastępowane jest tylko pierwsze wystąpienie ciągu.

1

To może pracować dla Ciebie:

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 nie akceptuje wielu poleceń zobacz 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 

Jeszcze innym sposobem:

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

lol, przepraszam, to nie działa w bashu OSX. – Rodrigo

+0

@Rodrigo dzięki za odpowiedź, wydaje się, że OSX nie przyjmuje wielu poleceń jako GNU sed. Edycja powinna być zgodna z OSX. – potong

Powiązane problemy