2015-04-22 65 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