如何将数字添加到文件中每行的开头?
E.g:
This is the text from the file.
变为:
000000001 This is 000000002 the text 000000003 from the file.
答案 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不是最佳选择。