シェルコマンドを使用してすべての行に行番号を追加するにはどうすればよいですか?


21

私のファイル、

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)

回答:


32

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

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

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

cat -n inputfile > outputfile

または、任意の行に一致するような正規表現でgrep -n(数字の後に:)を使用できます^

grep -n '^' inputfile > outputfile

はい...両方のコマンドが機能しています......しかし、catコマンドでは行番号をawk '{print NR "> " $s}' inputfile > outputfile出力しています...しかし、私が望んでいたものとは異なります...しかし、私に望ましい出力を与えます...
pmaipmui 2015

1
また、cat -n移植性がないことに注意してください。POSIXでは-uオプションのみが指定されていcatます。
vinc17 2018年

34

この仕事に適したツールはnl次のとおりです。

nl -w2 -s'> ' file

wファイル内の合計行数に応じてidthオプションを調整することもできます(数値を適切に揃えたい場合)。

出力:

 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
nl1、2、または3 \:文字列のシーケンスを含む行を特別に扱います。それ-d $'\n'を避けるために使用します。また、デフォルトでは、空の行には番号が付けられません。-baすべての行に番号を付けるために使用します。
ステファンChazelas

@StéphaneChazelas本当にありがとうございます。$'...'構文はbash固有であることに注意してください。
myrdd

それseqがうまくいかなかったのを見て、私の心は沈んだ。神に感謝nl
Sridhar Sarnobat

1
@myrdd、$'...'は、ksh93から来ているともでサポートされzshmksh少なくとも、busyboxののSH、FreeBSDのSHとbashの。これはまだ標準ではありませんが、次の主要なPOSIXバージョンに含める予定です。
ステファンChazelas

@StéphaneChazelasありがとう。参考までに、$'...'(ANSI-C Quoting
371827

0

以下の方法で行いました

コマンド: 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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.