Как добавить цифры в начало каждой строки в файле?
Например:
This is the text from the file.
Становится:
000000001 This is 000000002 the text 000000003 from the file.
Не используйте кошку или любой другой инструмент, который не предназначен для этого. Используйте программу:
nl - количество строк файлов
Пример:
nl --number-format=rz --number-width=9 foobar
Потому что для этого создан nl; -)
AWK printf , NR и $0 упрощают точное и гибкое управление форматированием:
NR
$0
~ $ awk '{printf("%010d %s\n", NR, $0)}' example.txt 0000000001 This is 0000000002 the text 0000000003 from the file.
Вы ищете команду nl(1):
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 запрашивает, чтобы числа были отформатированы по правому краю с добавлением нуля.
-w9
-nrz
cat -n thefile выполнит работу, хотя с числами в немного другом формате.
cat -n thefile
Самый простой, самый простой вариант -
awk '{print NR,$0}' file
См. Комментарий выше, почему nl на самом деле не лучший вариант.
Вот скрипт bash, который сделает это также:
#!/bin/bash counter=0 filename=$1 while read -r line do printf "%010d %s" $counter $line let counter=$counter+1 done < "$filename"
perl -pe 'printf "%09u ", $.' -- example.txt