0

.c ファイルを行番号付きのリスト ファイルにコピーしたいだけです。基本的に、.c ファイルから .prn ファイルを生成します。そのための適切な bash コマンドを見つけるのに苦労しています。

4

4 に答える 4

4

ということnlですか?

nl -ba filename.c

-ba空でない行だけでなく、すべての行に番号を付ける手段。

于 2012-09-21T12:28:21.203 に答える
3
awk '{print FNR ":" $0}' file1 file2 ...

一方向です。

FNR は FileNumberRecord (ファイルごとの現在の行番号) です。

必要に応じて「:」を変更できます。

$0「入力行全体」を意味します

または、あなたがすることができます

 cat -n file1 file2 ....

IHTH

于 2012-09-21T12:28:14.460 に答える
2

私のLinuxシステムでは、pr -tnリストの行番号にプレフィックスを付けるために使用することがあります。-tオプションは、ヘッダーとフッターを抑制します。-nは、行番号の前に付けることを意味します。-nは、オプションのフォーマットおよび数字指定子を許可します。マニュアルページを参照してください。とにかく、ファイルxyz.cを行番号付きのxyz.prnに出力するには、次を使用します。

pr -tn xyz.c > xyz.prn

これは(前の回答で提案されているようにcat -n xyz.c > xyz.prn使用する)ほどコンパクトで便利ではないことに注意してください。cat -nただしpr、他にも多数のオプションがあり、行に番号を付けて複数の列に配置したり、複数のファイルを並べて印刷したりする場合に最もよく使用します。たとえば、2列の番号付きリストの使用:

pr -2 -tn xyz.c > xyz.prn
于 2012-09-21T12:36:09.643 に答える
2

シェルターは正しい考えを持っていると思います。prnただし、拡張子が付いたファイルに出力を書き込む必要がある場合は、次の1つの方法があります。

awk '{ sub(/\.c$/, "", FILENAME); print FNR ":" $0 > FILENAME ".prn" }' file1.c file2.c ...

現在の作業ディレクトリ内のすべてのファイルに対してこれを実行するには、次の手順に従います。

for i in *.c; do awk '{ sub(/\.c$/, "", FILENAME); print FNR ":" $0 > FILENAME ".prn" }' "$i"; done
于 2012-09-21T13:00:09.560 に答える