使用awk打印从零开始的行号

时间:2013-12-23 22:21:13

标签: awk

有谁能告诉我如何使用awk打印包括零的行号?

这是我的输入文件stackfile2.txt

当我运行下面的awk命令时,我得到actual_output.txt

awk '{print NR,$0}' stackfile2.txt | tr " ", "," > actual_output.txt

而我的预期输出是file.txt

如何打印以零(0)开头的行号?

4 个答案:

答案 0 :(得分:69)

NR从1开始,所以请使用

awk '{print NR-1 "," $0}'

答案 1 :(得分:11)

使用awk。

我从0开始,i++将增加i的值,但返回我在增加之前持有的原始值。

awk '{print i++ "," $0}' file

答案 2 :(得分:5)

除了awk之外的另一个选项是nl,其允许用于设置起始值的选项-v和用于左,右和右的-n <lf,rf,rz>,其中前导零被对齐。您还可以在-s之类的字段分隔符中加入-s ",",以便在行号和数据之间使用逗号分隔。

在Unix环境中,这可以作为

完成
cat <infile> | ...other stuff... | nl -v 0 -n rz

或只是

nl -v 0 -n rz <infile>

示例:

echo "Here 
are
some 
words" > words.txt

cat words.txt | nl -v 0 -n rz

输出:

000000      Here
000001      are
000002      some
000003      words

答案 3 :(得分:0)

如果Perl是一个选项,你可以试试这个:

perl -ne 'printf "%s,$_" , $.-1' file

$_是行
$.是行号