2015-04-22 40 views
0

這裏是我的代碼打印出在編號格式我的文字:如何使用awk和printf從0而不是1對文本進行編號?

awk '{printf("%s \"%d\" \n" ,$0 , NR)}' mapcycle_surf1.txt 

輸出:

"surf_004_final1" "1" 
"surf_1day" "2" 
"surf_2012_beta12" "3" 
"surf_3" "4" 

如何啓動編號計數從0而不是1這樣的:

"surf_004_final1" "0" 
"surf_1day" "1" 
"surf_2012_beta12" "2" 
"surf_3" "3" 
+3

用'NR-1'代替? –

+0

真棒工作! – Infinite

回答

1

NR-1是溶液

awk '{printf("%s \"%d\" \n" ,$0 , NR-1)}' mapcycle_surf1.txt 

感謝Tom Fenech的回答。

這裏是更好的答案感謝fedorqui

awk '{print $0, NR-1}' mapcycle_surf1.txt 
+1

爲什麼不直接說'print $ 0,NR-1'?這裏不需要使用'printf'。 – fedorqui

+0

@fedorqui我想'printf'是有用的,因爲它使得在輸出中加上''''字符要容易一些。「 –

+0

@TomFenech哦,你說得對!我沒有注意到這個。 – fedorqui

2

你可以做print i++,請參見下面的測試:

kent$ seq 7|awk '{print i++}' 
0 
1 
2 
3 
4 
5 
6 

與你的說法,你可以嘗試:

awk '{printf("%s \"%d\" \n" ,$0 , i++)}' input 
+0

我不明白downvote ,+1來補償 – fedorqui

+0

這是怎麼回答的問題? – mathk

+0

@mathk如果你明白了這個問題和我的答案,你知道怎麼回事 – Kent