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

时间:2011-11-21 01:34:53

标签: bash row-number

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

E.g:

This is
the text
from the file.

变为:

000000001 This is
000000002 the text
000000003 from the file.

7 个答案:

答案 0 :(得分:103)

不要使用猫或任何其他不是为此而设计的工具。使用该程序:

  

nl - 文件编号行

示例:

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

因为为它做了nl; - )

答案 1 :(得分:32)

AWK的 printf NR$0可以轻松精确灵活地控制格式:

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

答案 2 :(得分:30)

您正在寻找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要求用零填充右对齐格式化数字。

答案 3 :(得分:15)

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

答案 4 :(得分:3)

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

答案 5 :(得分:3)

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

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

答案 6 :(得分:3)

最简单,最简单的选择是

awk '{print NR,$0}' file

请参阅上面的评论,了解为什么nl不是最佳选择。