2014-09-13 8 views
24

Haben Ausgabe von sed:tr Newline ersetzen mit Platz Mit

http://sitename.com/galleries/83450 
72-profile 

Diese beiden Strings zu einer verschmolzen und mit Platz wie getrennt werden sollen:

http://sitename.com/galleries/83450 72-profile 

Zwei Strings tr in pipelined werden Um Newline durch Leerzeichen zu ersetzen:

tr '\n' ' ' 

Und es ist nicht arbeiten, das Ergebnis ist das gleiche wie Eingabe.

Durch die Angabe von Leerzeichen mit dem ASCII-Code '\032' wird \n durch nicht druckbare Zeichen ersetzt.

Was ist los? Ich benutze Git Bash unter Windows.

+0

Getestet habe ich eine Textdatei mit Zeilenumbrüchen kochend mit der gleichen Syntax tr und es funktioniert. Wie machst du die Pfeife? Hat die Datei Zeilenumbrüche und Zeilenumbrüche? vielleicht versuchen "tr '\ r \ n' ''" –

Antwort

37

Beste Schätzung ist, dass Sie auf Windows sind und Ihre Zeilenende-Einstellungen für Windows festgelegt sind. dieses Thema: How to change line-ending settings

oder -nutzung:

tr '\r\n' ' ' 
+0

über Windows-Zeilenenden zuzustimmen. Die schnelle Lösung ist 'dos2unix file'. Viel Glück für jeden. – shellter

+0

Nun, das Skript hat immer noch '\ r'. Aber es sieht nicht so aus, als würde es für das funktionieren, was Sie wollen. Es wird alles auf eine Zeile gesetzt, nicht nur 2 Zeilen gleichzeitig, und dann wird Ihre FOR-Schleife immer nur einmal durchlaufen. –