So fügen Sie die ersten n Zeilen in einer Datei ein

8

Ich versuche, einige Daten zu bereinigen, und ich möchte sie schließlich in CSV-Form bringen.

Ich habe einige reguläre Ausdrücke verwendet, um es aufzuräumen, aber ich bin auf einem Schritt fest.

Ich möchte alle bis auf jede dritte neue Zeile (\ n) durch ein Komma ersetzen.

Die Daten sehen so aus:

%Vor%

usw.

Ich brauche es in

%Vor%

Jeder hat eine einfache Möglichkeit, dies mit sed oder awk zu tun? Ich könnte ein Programm schreiben und eine Schleife mit einem Mod-Zähler verwenden, um jedes erste und zweite Zeilenumbruchzeichen zu löschen, aber ich würde es lieber von der Kommandozeile aus machen, wenn möglich.

    
Sheldon Ross 12.03.2009, 20:45
quelle

8 Antworten

7

Mit awk:

%Vor%

Dieses Skript speichert die letzten drei Zeilen und druckt sie bei jeder dritten Zeile. Leider funktioniert das nur mit Dateien, die ein Vielfaches von 3 Zeilen haben.

Ein allgemeineres Skript ist:

%Vor%

In diesem Fall werden die letzten drei Zeilen in einer einzigen Zeichenfolge verkettet, wobei das Kommatrennzeichen eingefügt wird, wenn die Zeilennummer kein Vielfaches von 3 ist. Am Ende der Datei wird die Zeichenfolge gedruckt, wenn sie nicht leer ist mit dem nachgestellten Komma entfernt.

    
mouviciel 12.03.2009, 20:55
quelle
5

Awk-Version:

%Vor%     
ashawley 12.03.2009 21:08
quelle
4

Eine Perl-Lösung, die etwas kürzer ist und die Dateien bearbeitet, die kein Vielfaches von 3 Zeilen haben:

%Vor%     
J. A. Faucett 13.03.2009 03:16
quelle
1

Katzendatei | perl -ne 'chomp (); Drucken $ _,! (++ $ i% 3)? "\ n": ","; "

    
jj33 12.03.2009 21:01
quelle
1

Verwenden Sie nawk oder / usr / xpg4 / bin / awk unter Solaris :

%Vor%     
Dimitre Radoulov 13.03.2009 11:22
quelle
1

Dies könnte für Sie funktionieren:

%Vor%

oder das:

%Vor%     
potong 24.02.2012 06:45
quelle
0

vim-Version:

%Vor%     
chappar 13.03.2009 04:06
quelle
0

awk '{ORS = NR% 3? ",": "\ n"; Drucken}' urdata.txt

    
zh_ 02.04.2009 04:06
quelle

Tags und Links