シェルコマンドを使用して各行に行番号を追加するには?

シェルコマンドを使用して各行に行番号を追加するには?

私のファイル、

PSS-A  (Primary A)
PSS-B  (Primary B)
PSS-C  (Primary C)
PSS-D  (Primary D)
PSS-E  (Primary E)
PSS-F  (Primary F)
PSS-G  (Primary G)
PSS-H  (Primary H)
PSS-I  (Primary I)
SPARE  (SPARE)

結果ファイル、

 1> PSS-A  (Primary A)
 2> PSS-B  (Primary B)
 3> PSS-C  (Primary C)
 4> PSS-D  (Primary D)
 5> PSS-E  (Primary E)
 6> PSS-F  (Primary F)
 7> PSS-G  (Primary G)
 8> PSS-H  (Primary H)
 9> PSS-I  (Primary I)
10> SPARE  (SPARE)

答え1

作業に適したツールは次のとおりですnl

nl -w2 -s'> ' file

ファイルの総行数に基づいてidthオプションを調整する必要があるかもしれませんw(数字をうまく整列させるために)。

出力:

 1> PSS-A  (Primary A)
 2> PSS-B  (Primary B)
 3> PSS-C  (Primary C)
 4> PSS-D  (Primary D)
 5> PSS-E  (Primary E)
 6> PSS-F  (Primary F)
 7> PSS-G  (Primary G)
 8> PSS-H  (Primary H)
 9> PSS-I  (Primary I)
10> SPARE  (SPARE)

答え2

指定した形式と同じ形式が必要な場合

awk '{print NR  "> " $s}' inputfile > outputfile

それ以外の場合は標準ではありませんが、catこのコマンドのほとんどの実装では行番号を印刷できます(少なくともGNU、busybox、Solaris、およびFreeBSDの実装では、数字は幅6で埋められ、その後にTABが表示されます)。

cat -n inputfile > outputfile

あるいは、正規表現と一緒にgrep -n(数字の後に)を使用することもできます。たとえば、任意の行に一致します。:^

grep -n '^' inputfile > outputfile

答え3

Linux/Unix では、一般的なタスクを実行するためのほとんど常にいくつかの方法があります。完全性を期すために、明らかな方法に加えて使用できる他のいくつかの方法は次のとおりです。

    pr -t -n [file]

ラインプリンタに送信するためにテキストをフォーマットする前のコマンドに由来しています。 「-t」は、端末に依存しないヘッダーとフッター情報を省略します。

これは、他のすべての行に行番号を印刷するかわいいsedメソッドです。 「貼り付け」を使用して1行に縮小します。

    sed = /etc/passwd | paste - -

あるいは、実際のエディタであるedを使用することもできます。

    echo '1,$n' | ed -s [file]

または、たとえば、viのカーソルアドレスを持たない以前のバージョンは次のようになります。

    printf 'set number\ng/^/p\n' | ex /etc/passwd

ksh93 または bash (および seq コマンド. .. ranges および eval ステートメントの使用は練習のままにしておきます) が必要な最終的な複雑な答えです。

    paste <(seq $(wc -l < [file])) [file]

Debian Linux、FreeBSD、およびSolaris 10でテストされました(最後のバージョンは「seq」がないため失敗しました)。

答え4

私は次の方法でそれをしました

注文する:cat -n filename |sed -r "s/^\s+//g"| sed "s/^[0-9]*/&\> /g"

出力

cat -n u.txt |sed -r "s/^\s+//g"| sed "s/^[0-9]*/&\> /g"
1>  PSS-A  (Primary A)
2>  PSS-B  (Primary B)
3>  PSS-C  (Primary C)
4>  PSS-D  (Primary D)
5>  PSS-E  (Primary E)
6>  PSS-F  (Primary F)
7>  PSS-G  (Primary G)
8>  PSS-H  (Primary H)
9>  PSS-I  (Primary I)
10>     SPARE  (SPARE)

関連情報