2016-03-23 6 views
1

ich eine Textdatei wie dieses (viel Leerzeichen am Anfang jeder Zeile links) habe:Entfernen Newline in bestimmten Mustern, sondern „slash“ verschwunden

2016/03/01 
       6,015,511 +0.55 3,718 
    2016/03/02 
       4,584,160 -0.50 2,885 
    2016/03/03 
       5,509,856 0.00 718 

Die Ziele sind es, die Newline nach dem Datum zu entfernen String wie in

2016/03/01  6,015,511 +0.55 3,718 
    2016/03/02  4,584,160 -0.50 2,885 
    2016/03/03  5,509,856 0.00 718 

Verwendung

sed ':a;N;$!ba;s:\([[:digit:]]\S*\)\n:\1 :g' 

Ergebnisse in allen Zeilen in einer Zeile kombiniert.

Hinzufügen eines Schrägstrich auf die regex das Newline in der Datumszeichenfolge entfernen

sed ':a;N;$!ba;s:\/\([[:digit:]]\S*\)\n:\1 :g' 

Ergebnis wird (erste Datum String Slash ist verschwunden):

201603/01  6,015,511 +0.55 3,718 
    201603/02  4,584,160 -0.50 2,885 
    201603/03  5,509,856 0.00 718 

Kann mir jemand einen Tipp geben?

+0

Beginnen Ihre Dateien wirklich mit einer leeren Zeile, oder ist das ein Artefakt bei der Verwendung von HTML-Tags? Sie können Codeblöcke erstellen, indem Sie sie um vier Leerzeichen einrücken (oder indem Sie sie auswählen und dann Strg + K drücken). –

Antwort

2

denke ich, alles, was Sie wollen, ist dies:

$ sed 'N;s/\n//' infile 
    2016/03/01    6,015,511 +0.55 3,718 
    2016/03/02    4,584,160 -0.50 2,885 
    2016/03/03    5,509,856 0.00 718 

Dies fügt die nächste Zeile zu dem Musterraum, entfernt dann das Newline.

0

Versuchen folgende Skript:

sed 's/^\s*//;N;s/\n\s*/ /' data.txt 

2016/03/01 6,015,511 +0.55 3,718 
2016/03/02 4,584,160 -0.50 2,885 
2016/03/03 5,509,856 0.00 718 

Es alle führenden Leerzeichen aus erster Linie entfernen und angemessene Räume zwischen dem ersten und zweiten Zeile einzufügen.

+0

Danke Saleems Antwort. Es entfernt nicht nur Newline, sondern auch führende Whitespaces. – orionlin

Verwandte Themen