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


Print line numbers starting at zero using awk

有人能告诉我如何用awk打印包括零在内的行号吗?

这是我的输入文件stackfile2.txt

当我运行下面的awk命令时,我会得到实际的输出.txt

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

而我期望的输出是file.txt

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


nr从1开始,所以使用

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


使用AWK。

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

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


除awk之外的另一个选项是nl,它允许选项-v用于设置起始值,-n 用于左、右和右,前导零对齐。您还可以包括用于字段分隔符的-s,例如用于行号和数据之间逗号分隔的-s","

在UNIX环境中,这可以作为

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

或者简单地

1
nl -v 0 -n rz <infile>

例子:

1
2
3
4
echo"Here
are
some
words"> words.txt

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

出:

1
2
3
4
000000      Here
000001      are
000002      some
000003      words

如果Perl是一个选项,您可以尝试以下操作:

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

$_是线路$.是行号