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

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

这是我的输入文件 Stackfile2.txt

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

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

而我的预期输出是 File.txt

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

153654 次浏览

NR 从1开始,所以使用

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

用 awk。

I 从0开始,i++将递增 i 的值,但返回在递增之前保持的原始值。

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

如果 Perl 是一个选项,您可以尝试这样做:

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

$_是线路
$.是行号

除 awk 之外的另一个选项是 没有,它允许选项 -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