2017-06-26 4 views
1

Ich habe eine Textdatei wie folgt aus:Wie erstellt man eine neue Zeile für jeden Bereich außer einem?

www.twitter.com,sev-pool,tiger lion, 
www.google.com,"http google-pool,, 
www.facebook.com,pool,usa mexico canada, 

ich jeden Raum eine neue Linie mit Ausnahme der Raum in „http google-Pool in diesem Beispiel machen wollen, weil die "unerreichte hierzu eine wenn Anweisung abhängig von der " oder irgendeine andere Art und Weise Linie.

gibt es eine Weise, die ich dies ohne Verwendung der Zeilennummer kann? Vielleicht?

Ich verwende den tr Befehl: tr " " "/n", aber ich kann nicht die gewünschte Zeile weglassen.

Erwarteter Ausgang:

www.twitter.com,sev-pool,tiger 
lion, 
www.google.com,"http google-pool,, 
www.facebook.com,pool,usa 
mexico 
canada, 
+0

'tr ''‚\ n'' Aufkantung, einfache Anführungszeichen (oder den Backslash verdoppeln) – wildplasser

Antwort

2

Eine awk Lösung, die mit dem aktualisierten Anforderungen (ignorieren Linien mit einer unübertroffenen ") arbeitet:

awk '/"[^"]*$/ { print; next } { gsub(" ", "\n"); print }' file 

Hinweis:

  • Die Annahme ist, dass die Zeilen, die eine unübertroffeneenthaltensollte von der Raum-zu-Newline-Übersetzung als Ganzes ausgeschlossen werden.

Dies ergibt:

www.twitter.com,sev-pool,tiger 
lion, 
www.google.com,"http google-pool,, 
www.facebook.com,pool,usa 
mexico 
canada, 
0
awk '!/google/{gsub(/ /,"\n")}1' file 

www.twitter.com,sev-pool,tiger 
lion, 
www.google.com,"http google-pool,, 
www.facebook.com,pool,usa 
mexico 
canada, 
Verwandte Themen