如何向文本添加行号?

如何向文本添加行号?

我的文字是:

Hi
Bye
Nope
Sorry
Cya
Chill

我怎样才能做到:

[1] Hi
[2] Bye
[3] Nope

等等等等?

答案1

nl(“数字线”)实用程序执行以下操作:

$ cat file
Hi
Bye

Nope
Sorry

Cya
Chill

$ nl file
     1  Hi
     2  Bye

     3  Nope
     4  Sorry

     5  Cya
     6  Chill

nl您可以尝试多种选项。它还可以进行页码编号等。

的一些实现cat还支持行编号:

$ cat -n file
     1  Hi
     2  Bye
     3
     4  Nope
     5  Sorry
     6
     7  Cya
     8  Chill

awk

$ awk '{ print NR, $0 }' file
1 Hi
2 Bye
3
4 Nope
5 Sorry
6
7 Cya
8 Chill

或者,如果您不想对空行进行编号:

$ awk '$0 { print ++nr, $0; next } { print }' file
1 Hi
2 Bye

3 Nope
4 Sorry

5 Cya
6 Chill

使用awk,也可以轻松进行特殊格式化:

$ awk -vOFS="\t" '$0 { print "[" ++nr "]", $0; next } { print }' file
[1]     Hi
[2]     Bye

[3]     Nope
[4]     Sorry

[5]     Cya
[6]     Chill

或者...

$ awk -vOFS=":\t" '$0 { printf("[%03d]%s%s\n", ++nr, OFS, $0); next } { print }' file
[001]:  Hi
[002]:  Bye

[003]:  Nope
[004]:  Sorry

[005]:  Cya
[006]:  Chill

来自paste手册(在 OpenBSD 上):

$ sed '=' file | paste -s -d '\t\n' - -
1       Hi
2       Bye
3
4       Nope
5       Sorry
6
7       Cya
8       Chill

答案2

awk '{printf "%s.\t%s\n",NR,$0}' file

此外,您可以只使用该nl命令。所以就像:

cat /path/to/file | nl > /path/to/output

相关内容