如何使用 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"

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

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

使用您的声明,您可以尝试:

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

NR-1是解决方案

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

感谢Tom Fenech的回答。

这是更好的答案,感谢费多基

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

相关内容

  • 没有找到相关文章

最新更新