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