2016-08-01 5 views
1

Я пытаюсь добавить номер строки перед каждой строкой при пропуске заголовка с помощью awk. Однако, как представляется, нижняя часть, по-видимому, удаляет заголовок и начинает номер строки в 2. Я близко? Спасибо :).awk, чтобы добавить строку # skipping header

вход

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

Итак, если вы хотите начать с 1 во 2-й строке, замените 'NR' на' NR-1'. – fedorqui

1
awk '{print (NR>1 ? NR-1 OFS : "") $0}' file 
Смежные вопросы