2017-02-06 10 views
-1

ich weiß, wie die Spaltenüberschrift beim Lesen einer Datei zu ignorieren.Awk, Header: igore beim Lesen, beim Schreiben

awk 'FNR > 1 { #process here }' table > out_table 

Aber wenn ich dies tun, alles andere andere als die Spaltenüberschrift wird in die Ausgabedatei geschrieben: Ich kann etwas tun. Aber ich möchte, dass die Ausgabedatei auch COLUMN HEADER hat.

Natürlich kann ich so etwas tun, nachdem ich die erste Anweisung ausführen:

awk 'BEGIN {print "Column Headers\t"} {print}' Out_table > out_table_with_header 

Aber dies wird zu einem 2-Stufen-Prozess. Gibt es eine Möglichkeit, dies in einem SINGE STEP selbst zu tun?

Kurz gesagt, gibt es eine Möglichkeit für mich, Spaltenüberschrift während des Lesens der Datei zu ignorieren, Operationen an den Daten durchzuführen und dann Spaltenüberschrift beim Schreiben in die Ausgabedatei in einem einzigen Schritt (oder einem Schrittblock) einzubeziehen ? sehr weniger Reaktionszeit)

+0

Ihr 'BEGIN {} {}' ist gemacht und dauert fast keine Zeit, und aufgrund Ihrer bedingten Ausgabe gibt es einen bedingten Block (Code). Jetzt können Sie einen einfachen Block '{#einfachen Prozess; drucken $ 1 $ 2}' drucken und Header und Inhalt, aber es hängt von Ihrer Manipulation ab, die den Header-Inhalt ändern kann. – NeronLeVelu

Antwort

1

nicht sicher, ob ich Ihre richtig erhalten haben, können Sie einfach:

awk 'NR==1{print}; NR>1 { # process }' file 

, die vereinfacht werden kann:

awk 'NR==1; NR>1 { # process }' file 

das funktioniert fo R eine einzelne Eingabedatei.


Wenn Sie mehr als eine Datei zu verarbeiten, die alle mit den gleichen Spaltenüberschriften in Zeile 1 verwenden diese:

awk 'FNR==1 && !h {print; h=1}; FNR>1 { # process }' file1 file2 ... 

ich die Variable h mit überprüfen, ob die Header gewesen schon gedruckt oder nicht.

+0

dies, funktioniert, danke viel Mann – Raymond

+0

nicht gegensätzliche Bedingungen testen - 'awk 'NR == 1 {print; weiter} {# process} 'Datei' –

+0

Warum? Sie zeigen auf den zusätzlichen Check in jeder Zeile? – hek2mgl

Verwandte Themen