web-dev-qa-db-ja.com

ファイル内のすべての行の先頭に数字を追加します

ファイル内のすべての行の先頭に数字を追加するにはどうすればよいですか?

例えば。:

これは
ファイルのテキスト
です。

になる:

 000000001これは、
 000000002ファイルのテキスト
 000000003です。
57
Village

AWKのprintfNRおよび$0書式設定を正確かつ柔軟に制御できるようにします。

~ $ awk '{printf("%010d %s\n", NR, $0)}' example.txt
0000000001 This is
0000000002 the text
0000000003 from the file.
33

Catまたはそれを行うように設計されていない他のツールを使用しないでください。プログラムを使用します。

nl-ファイルの行数

例:

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

Nlが作成されているためです;-)

105
tamasgal

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は、9桁の数字を要求します。 -nrzは、数値をゼロ詰めで右揃えでフォーマットするよう要求します。

31
sarnold

cat -n thefileは、わずかに異なる形式の数字であるにもかかわらず、仕事をします。

15
duskwuff

最も簡単でシンプルなオプションは

awk '{print NR,$0}' file

Nlが実際には最良の選択肢ではない理由については、上記のコメントを参照してください。

4
egorulz
Perl -pe 'printf "%09u ", $.' -- example.txt
3

これもこれを行うbashスクリプトです。

#!/bin/bash
counter=0
filename=$1
while read -r line
do
  printf "%010d %s" $counter $line
  let counter=$counter+1
done < "$filename"
3
slashdottir