2016-08-18 4 views
1

Ich sah dies: How can I replace a newline (\n) using sed?, und dachte, ich würde versuchen, tr zu verwenden, um Zeilenumbrüche durch ', zu ersetzen.Wie ersetzen Sie Zeilenumbrüche mit Komma mit `tr`?

Die Datei sieht wie folgt aus:

something 
newline 
newline again 

und ich möchte es so aussehen:

something', 
newline', 
newline again', 

So habe ich versucht, diese:

tr "\n" "'," < myfileabove tr "\n" "\'," < myfileabove

Keiner tut was ich möchte ... .mache ich etwas falsch?

+1

Was Sie tun wollen: a) ersetzen neue Zeilen mit '‘, 'als Text Staaten oder b) in' ', 'bis zum Ende jeder Zeile, wie Ihr Beispiel zeigt? –

+0

Ich empfehle, sed zu verwenden: 'sed" s/$/',/"file' – Cyrus

Antwort

2

tr übersetzt ein Zeichen in ein anderes Zeichen, es wird nicht zu/von Zeichenfolgen zugeordnet, und daher kann keine neue Zeile einer Zeichenfolge zugeordnet werden. Wenn Sie versuchen, sed zu verwenden, erhalten Sie eine unverständliche und/oder nicht tragbare Unordnung. Verwenden Sie einfach awk:

awk -v ORS="'," '1' file 

Hang on - geposteten Beispiel nicht zeigen Sie Zeilenumbrüche mit ', zu ersetzen, die wäre:

$ awk -v ORS="'," '1' file 
something',newline',newline again',$ 

es Sie ', Anhängen am Ende jeder Zeile zeigt die ist eine ganz andere Sache. Sie können immer noch nicht tun, mit tr, aber man könnte es tun mit sed oder awk:

$ sed 's/$/'\'',/' file 
something', 
newline', 
newline again', 

$ awk -v ORS="',\n" '1' file 
something', 
newline', 
newline again', 
+0

' awk' ist in Ordnung, aber ich würde lieber bei den Werkzeugen bleiben, die ich kenne. Gibt es keinen Weg es mit 'tr' zu machen? – Hunle

+0

Nein, 'tr' ist für die Übersetzung eines Zeichens in ein anderes, aber Sie möchten ein Zeichen in eine Zeichenkette mit mehreren Zeichen umwandeln. Sie werden eine extrem schwierige Zeit haben, Software zu schreiben, wenn Sie sich an die Tools halten, die Sie kennen, ob sie das richtige Werkzeug für den Job sind oder nicht, anstatt die für jeden Job geeigneten Tools zu erlernen. Sie tauschen eine kurze Lernkurve für eine lebenslange zeitraubende, ineffiziente, fehlerhafte Codierung aus. –

+1

@Hunle dies beantwortet Ihre Frage und im vergangenen Jahr + keine alternative Antwort wurde veröffentlicht, so siehe https://stackoverflow.com/help/someone-answers für was als nächstes zu tun. –

Verwandte Themen