テキストに行番号を追加するには? [閉鎖]

テキストに行番号を追加するには? [閉鎖]

私のテキストは次のとおりです

Hi
Bye
Nope
Sorry
Cya
Chill

どうすればいいですか?

[1] Hi
[2] Bye
[3] Nope

など?

答え1

nl("Number Line") ユーティリティは次のことを行います。

$ cat file
Hi
Bye

Nope
Sorry

Cya
Chill

$ nl file
     1  Hi
     2  Bye

     3  Nope
     4  Sorry

     5  Cya
     6  Chill

nl試してみるにはいくつかのオプションがあります。ページ番号付けなども行えます。

一部の実装では、cat行番号付けもサポートしています。

$ cat -n file
     1  Hi
     2  Bye
     3
     4  Nope
     5  Sorry
     6
     7  Cya
     8  Chill

そしてawk

$ awk '{ print NR, $0 }' file
1 Hi
2 Bye
3
4 Nope
5 Sorry
6
7 Cya
8 Chill

または空白行に番号を付けたくない場合:

$ awk '$0 { print ++nr, $0; next } { print }' file
1 Hi
2 Bye

3 Nope
4 Sorry

5 Cya
6 Chill

以下を使用してawk特殊なフォーマットを簡単に実行することもできます。

$ awk -vOFS="\t" '$0 { print "[" ++nr "]", $0; next } { print }' file
[1]     Hi
[2]     Bye

[3]     Nope
[4]     Sorry

[5]     Cya
[6]     Chill

または...

$ awk -vOFS=":\t" '$0 { printf("[%03d]%s%s\n", ++nr, OFS, $0); next } { print }' file
[001]:  Hi
[002]:  Bye

[003]:  Nope
[004]:  Sorry

[005]:  Cya
[006]:  Chill

pasteマニュアルから(OpenBSD):

$ sed '=' file | paste -s -d '\t\n' - -
1       Hi
2       Bye
3
4       Nope
5       Sorry
6
7       Cya
8       Chill

答え2

awk '{printf "%s.\t%s\n",NR,$0}' file

または、このコマンドを使用することもできますnl。そのように:

cat /path/to/file | nl > /path/to/output

関連情報