2017-12-21 3 views
0

Ich versuche, eine durch Tabulator getrennte Tabelle zu verarbeiten, in der einige Zellen Zeilenumbrüche enthalten. Die Tische wurden von PDF-Tabellen automatisch extrahiert und wie folgt aussehen:Zeilenumbrüche in Klartexttabellen mit Unix-Befehlszeilentools korrigieren

1 UNITED STATES OF 3797 
    AMERICA 
2 CANADA 3855 
3 ISLAMIC REPUBLIC 636 
    OF IRAN 

wo die linke Spalte in jeder Textzeile einen Eintrag hat nur dann, wenn die Zeile beginnt tatsächlich eine neue Dateneingabe. (Ich habe Leerzeichen verwendet, um den Effekt des Tabstopps zu simulieren, da StackOverflow die Eingabe von Tabulatoren nicht erlaubt.) Ich möchte einen einfachen Weg finden, diese Tabelle in den folgenden Code zu transformieren: Idealerweise mit Zeilenorientierung Unix-Textverarbeitungstools:

1 UNITED STATES OF AMERICA 3797 
2 CANADA 3855 
3 ISLAMIC REPUBLIC OF IRAN 636 

Gibt es einen einfachen Weg, dies mit den Standard-Unix-Tools zu tun? Ich habe ein bisschen experimentiert und habe keins gefunden.

Antwort

0

können Sie versuchen, diese awk

awk -F '\t' ' 
NF==3{ 
    if(b) 
    print b 
    b=$0 
    } 
NF==2{ 
    split(b,a,FS) 
    b=a[1] FS $2 " " a[2] FS a[3] 
    } 
END{ 
    print b 
    } 
' infile 

Sie müssen die Ausgabe neu ordnen, wie Sie

wie