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

Vil*_*age 57 bash row-number

如何在文件的每一行的开头添加数字?

例如:

This is
the text
from the file.

变为:

000000001 This is
000000002 the text
000000003 from the file.

tam*_*gal 107

不要使用猫或任何其他非设计用途的工具.使用该程序:

nl - 文件的行数

例:

nl --number-format=rz --number-width=9 foobar
Run Code Online (Sandbox Code Playgroud)

因为nl是为它而制作的;-)

  • `ls nl #nl for dummies` (7认同)
  • 在读取 EOF 之前,它不会输出这些行。所以你不能用它来对在线长时间运行的程序的输出进行编号。 (2认同)
  • @egorulz 使用 `-ba` 开关。 (2认同)

Ray*_*ger 35

AWK的printf的,NR$0可以很容易地有超过格式化精确和灵活的控制:

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


sar*_*old 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
...
Run Code Online (Sandbox Code Playgroud)

-w9请求数字长度为九位数; -nrz要求用零填充右对齐格式化数字.

  • 村庄:完全没有 - Stack Overflow旨在回答各个层面的问题.@Raymond刚刚注意到你在短时间内提出了三个问题,要求解决与教授在"学习Unix"课程中可能指定的家庭作业类似的问题.一个人听起来像是在寻找问题解决方案的人,但这三个人在一起让我们想知道我们是否正在为你做功课.:) (4认同)
  • @Raymond,真的,但我没有看到任何迹象表明这是作业.简单?当然.但是这些东西上有大量的文本处理工具,即使是经验丰富的开发人员也从未了解过. (3认同)

dus*_*uff 16

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


ego*_*ulz 6

最简单,最简单的选择是

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

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


sla*_*tir 5

这是一个也可以执行此操作的 bash 脚本:

#!/bin/bash
counter=0
filename=$1
while read -r line
do
  printf "%010d %s" $counter $line
  let counter=$counter+1
done < "$filename"
Run Code Online (Sandbox Code Playgroud)