如何使用awk和printf对0中的文本进行编号而不是1?

时间:2015-04-22 08:19:00

标签: linux bash awk printf

以下是我的代码,它以编号格式打印出我的文字:

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"

2 个答案:

答案 0 :(得分:2)

你可以print i++,见下面的测试:

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

您的陈述,您可以尝试:

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

答案 1 :(得分: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