ファイル内のすべての行の先頭に数字を追加するにはどうすればよいですか?
例えば。:
これは ファイルのテキスト です。
になる:
000000001これは、 000000002ファイルのテキスト 000000003です。
AWKのprintf、NR
および$0
書式設定を正確かつ柔軟に制御できるようにします。
~ $ awk '{printf("%010d %s\n", NR, $0)}' example.txt
0000000001 This is
0000000002 the text
0000000003 from the file.
Catまたはそれを行うように設計されていない他のツールを使用しないでください。プログラムを使用します。
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
は、9桁の数字を要求します。 -nrz
は、数値をゼロ詰めで右揃えでフォーマットするよう要求します。
cat -n thefile
は、わずかに異なる形式の数字であるにもかかわらず、仕事をします。
最も簡単でシンプルなオプションは
awk '{print NR,$0}' file
Nlが実際には最良の選択肢ではない理由については、上記のコメントを参照してください。
Perl -pe 'printf "%09u ", $.' -- example.txt
これもこれを行うbashスクリプトです。
#!/bin/bash
counter=0
filename=$1
while read -r line
do
printf "%010d %s" $counter $line
let counter=$counter+1
done < "$filename"