将数字添加到文件中每行的开头

我怎样才能将数字添加到文件的每一行的开头?

例如:

这是
文本
从文件中。

变为:

 000000001这是
 000000002的文字
 000000003从文件。

AWK的printfNR$0可以很容易地对格式化进行精确和灵活的控制:

 ~ $ awk '{printf("%010d %s\n", NR, $0)}' example.txt 0000000001 This is 0000000002 the text 0000000003 from the file. 

不要使用猫或任何其他不是专门devise的工具。 使用该程序:

nl – 文件的行数

例:

 nl --number-format=rz --number-width=9 foobar 

因为nl是为它而做的;-)

你正在寻找nl(1)命令:

 $ nl -nrz -w9 /etc/passwd 000000001 root:x:0:0:root:/root:/bin/bash 000000002 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 000000003 bin:x:2:2:bin:/bin:/bin/sh ... 

-w9要求九位数字的长度; -nrz要求将数字格式化为带有零填充的右alignment。

cat -n thefile将完成这项工作,尽pipe数字的格式稍有不同。

 perl -pe 'printf "%09u ", $.' -- example.txt 

这是一个bash脚本,它也会这样做:

 #!/bin/bash counter=0 filename=$1 while read -r line do printf "%010d %s" $counter $line let counter=$counter+1 done < "$filename" 

最简单,最简单的select是

 awk '{print NR,$0}' file 

见上面的评论为什么NL不是最好的select。