有谁能告诉我如何使用awk打印包括零的行号?
这是我的输入文件stackfile2.txt
当我运行下面的awk命令时,我得到actual_output.txt
awk '{print NR,$0}' stackfile2.txt | tr " ", "," > actual_output.txt
而我的预期输出是file.txt
如何打印以零(0)开头的行号?
答案 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
$_
是行
$.
是行号