2017-05-15 7 views
0

Eingang Namen RicoMulitiple Zeilen einzelne Zeile

Adresse Australien

Alter 24

Namen Rica

Adresse Asien

Alter 25

Output Namen Rico, Adresse Australien, Alter 24

Namen Rica, Adresse Asien, Alter 25

Können wir das in Unix tun?

+0

Ja, das wäre trivial. Sehen Sie [fragen], wenn Sie eine Nachfolgefrage haben. –

+0

Willkommen bei StackOverflow. Bitte nehmen Sie die [Tour], lernen, gute Fragen zu stellen stackoverflow.com/help/how-to-ask, machen eine [MCVE]. Ein MCVE sollte eine Vielzahl von Beispieleingaben (unter Veranschaulichung aller Aspekte) und die gewünschte Ausgabe enthalten. Sie sollten auch die Mühe zeigen, die Sie selbst investiert haben. Sie haben vielleicht bemerkt, dass StackOverflow-Lesegeräte nicht sehr zufrieden mit der Impression sind, die als kostenloser Codierungsdienst verwendet werden kann. – Yunnosch

+0

Möchten Sie alle Zeilen in einem zusammenfassen? Ihr Sample ein- und ausgesucht scheint dies anzuzeigen. Sie möchten nicht nur Sätze von Zeilen "Name .../Adresse .../Alter ..." erstellen? – Yunnosch

Antwort

0

ich die Lösung gefunden:

awk ‚BEGIN {RS = ""; FS = "\ n"}; {Print $ 1, $ 2}‘Datei

Hier wird den Eingabedatensatz-Separator als eine Leerzeile oder aufeinanderfolgende Leerzeilen für diese Angelegenheit, da der nächste Datensatz neben nicht-leere Zeile sein wird. Dadurch wird das Feldtrennzeichen auch als nextline festgelegt.

0

Sie können mit awk mehrere Zeilen in eine Zeile umwandeln.

#!/usr/bin/awk 
# table.awk 

{ 
    if (NR == 1) { 
     printf("%s",$0); 
    } else { 
     printf(",%s",$0); 
    } 
} 

$ cat input.csv

Name Rico 
Address Australia 
Age 24 
Name Rica 
Address Asia 
Age 25 

$ awk -f table.awk input.csv

Name Rico,Address Australia,Age 24,Name Rica,Address Asia,Age 25 

Es gibt effizientere Antworten in Stackoverflow, wie folgt vor:

How to merge rows from the same column using unix tools

+0

'NR == FNR' ist immer wahr für eine einzige Dateieingabe – karakfa

+0

@karakfa Danke karakfa. Ich überlegte eine Weile. In diesem Fall ist es nicht notwendig, FNR zu verwenden. – hiropon

+1

@EdMorton Vielen Dank für Ihre Informationen. Ich habe aktualisiert. – hiropon

0

hier ist eine weitere Alternative ...

paste -sd, inputfile 
1

mit sed:

sed ':a;N;$!ba;s/\n/, /g' filename 
Verwandte Themen