2016-08-01 51 views
1

我想在每行前使用awk跳过标题添加一个行号。但是,下面似乎是删除标题,并在2开始行号。我关门了吗?谢谢 :)。awk添加行#跳过标题

输入

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

AWK

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

电流输出

2 chrX 110961329 110961512 ALG13 
3 chrX 110987885 110988142 ALG13 

所需的输出

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

您应该打印的输出也请说明什么是所需的输出。这很重要 – fedorqui

+0

对不起,我添加了它,但它看起来像一切正常。谢谢 :)。 – Chris

回答

2

即使在数线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

谢谢你的帮助和解释:) – Chris

3

你只是打印,如果你是行号> 1.

相反,在前面加上NR时,它比一个大;那么,说1,使所有的行会被打印:

$ 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

谢谢你的帮助和解释:) – Chris

+0

好的,如果你想从第2行的1开始,用'NR-1'代替'NR'。 – fedorqui

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