Добавить цифры в начало каждой строки в файле - PullRequest
56 голосов
/ 21 ноября 2011

Как добавить цифры в начало каждой строки в файле?

Например:

This is
the text
from the file.

Становится:

000000001 This is
000000002 the text
000000003 from the file.

Ответы [ 7 ]

104 голосов
/ 21 ноября 2011

Не используйте кошку или любой другой инструмент, который не предназначен для этого. Используйте программу:

nl - количество строк файлов

Пример:

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

Потому что для этого создан nl; -)

33 голосов
/ 21 ноября 2011

AWK printf , NR и $0 упрощают точное и гибкое управление форматированием:

~ $ awk '{printf("%010d %s\n", NR, $0)}' example.txt
0000000001 This is
0000000002 the text
0000000003 from the file.
31 голосов
/ 21 ноября 2011

Вы ищете команду 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 запрашивает, чтобы числа были отформатированы по правому краю с добавлением нуля.

15 голосов
/ 21 ноября 2011

cat -n thefile выполнит работу, хотя с числами в немного другом формате.

3 голосов
/ 21 марта 2016

Самый простой, самый простой вариант -

awk '{print NR,$0}' file

См. Комментарий выше, почему nl на самом деле не лучший вариант.

3 голосов
/ 21 января 2014

Вот скрипт bash, который сделает это также:

#!/bin/bash
counter=0
filename=$1
while read -r line
do
  printf "%010d %s" $counter $line
  let counter=$counter+1
done < "$filename"
3 голосов
/ 21 ноября 2011
perl -pe 'printf "%09u ", $.' -- example.txt
...