请问如何使用awk打印包括0在内的行号?
这是我的输入文件stackfile2.txt
当我运行下面的awk命令时,我得到的结果为actual_output.txt
awk '{print NR,$0}' stackfile2.txt | tr " ", "," > actual_output.txt
我的期望输出是file.txt
如何打印以零(0)开头的行号?
请问如何使用awk打印包括0在内的行号?
这是我的输入文件stackfile2.txt
当我运行下面的awk命令时,我得到的结果为actual_output.txt
awk '{print NR,$0}' stackfile2.txt | tr " ", "," > actual_output.txt
我的期望输出是file.txt
如何打印以零(0)开头的行号?
NR从1开始,因此请使用
awk '{print NR-1 "," $0}'
awk -v OFS="," '{print NR-1, $0}' file
。 - fedorqui使用awk。
i从0开始,i++
将增加i的值,但返回被增加之前i的原始值。
awk '{print i++ "," $0}' file
NR-1
短一个字符的情况,您也可以使用 awk '{print i++,$0}' OFS=, file
,但这会更长。awk '$0=i++","$0'
厉害极了 ;-) (注:原文为英语幽默口语,意思是在打高尔夫球时,这条命令可以给每个杆数前面加上序号并输出,表示对该命令的赞赏) - Adrian Frühwirth除了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
perl -ne 'printf "%s,$_" , $.-1' file
$_
是当前行的内容
$.
是当前行号
awk '{print NR-1,$0}'
吗? - Anton Kovalenko