2016-08-01 6 views
1

Ich versuche, eine Zeile Nummer vor jeder Zeile in den Header überspringt mit awk. Jedoch scheint die folgende Zeile den Header zu entfernen und die Zeilennummer bei 2 zu starten. Bin ich in der Nähe? Vielen Dank :).awk zum Hinzufügen row # skipping header

Eingangs

Chr Start End Gene 
chrX 110961329 110961512 ALG13 
chrX 110987885 110988142 ALG13 

awk

awk 'NR>1{print NR, $0}' input 

Stromausgang

2 chrX 110961329 110961512 ALG13 
3 chrX 110987885 110988142 ALG13 

gewünschte Ausgangs

1 chrX 110961329 110961512 ALG13 
2 chrX 110987885 110988142 ALG13 
+1

bitte auch angeben, was ist die gewünschte Ausgabe ist. Es ist wichtig, – fedorqui

+0

Sorry, ich habe es hinzugefügt, aber es sieht aus wie alles funktioniert. Vielen Dank :). – Chris

Antwort

2

Sie sollten eine Ausgabe sogar drucken, wenn die Zahl Linie 1

$ awk 'NR==1{print $0} NR>1{print NR-1, $0}' input 

Chr Start End Gene 
1 chrX 110961329 110961512 ALG13 
2 chrX 110987885 110988142 ALG13 
+0

Vielen Dank für Ihre Hilfe und Erklärungen :) – Chris

3

Sie drucken nur, wenn Sie in die Zeilennummer sind> 1.

Stattdessen prepend NR, wenn es größer als eins ist; dann, sagen 1, so dass alle Zeilen gedruckt werden:

$ awk 'NR>1{printf "%d%s", NR, OFS}1' file 
Chr Start End Gene 
2 chrX 110961329 110961512 ALG13 
3 chrX 110987885 110988142 ALG13 
+0

Vielen Dank für Ihre Hilfe und Erklärungen :) – Chris

+0

OK, wenn Sie von 1 in der 2. Reihe beginnen wollten, ersetzen Sie "NR" durch "NR-1". – fedorqui

1
awk '{print (NR>1 ? NR-1 OFS : "") $0}' file