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

use*_*049 49 awk

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

这是我的输入文件stackfile2.txt

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

awk '{print NR,$0}' stackfile2.txt | tr " ", "," > actual_output.txt
Run Code Online (Sandbox Code Playgroud)

而我的预期输出是file.txt

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

Lan*_*rts 77

NR从1开始,所以使用

awk '{print NR-1 "," $0}'
Run Code Online (Sandbox Code Playgroud)

  • 将输出字段分隔符设置为逗号可能更好:`awk -v OFS =","'{print NR-1,$ 0}'file`. (4认同)

BMW*_*BMW 12

使用awk.

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

awk '{print i++ "," $0}' file
Run Code Online (Sandbox Code Playgroud)

  • @Jotne外出打高尔夫球时,'awk'$ 0 = i ++","$ 0'`击败它;-) (3认同)

Jon*_*Jon 6

除了awk之外的另一个选项是nl,它允许-v设置起始值的选项以及-n <lf,rf,rz>左前,右和右的前导零合理.您还可以包含-s字段分隔符,例如-s ","行号和数据之间的逗号分隔.

在Unix环境中,这可以完成

cat <infile> | ...other stuff... | nl -v 0 -n rz
Run Code Online (Sandbox Code Playgroud)

或者干脆

nl -v 0 -n rz <infile>
Run Code Online (Sandbox Code Playgroud)

例:

echo "Here 
are
some 
words" > words.txt
Run Code Online (Sandbox Code Playgroud)

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

日期:

000000      Here
000001      are
000002      some
000003      words
Run Code Online (Sandbox Code Playgroud)