Утилита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