.c ファイルを行番号付きのリスト ファイルにコピーしたいだけです。基本的に、.c ファイルから .prn ファイルを生成します。そのための適切な bash コマンドを見つけるのに苦労しています。
4 に答える
ということnl
ですか?
nl -ba filename.c
-ba
空でない行だけでなく、すべての行に番号を付ける手段。
awk '{print FNR ":" $0}' file1 file2 ...
一方向です。
FNR は FileNumberRecord (ファイルごとの現在の行番号) です。
必要に応じて「:」を変更できます。
$0
「入力行全体」を意味します
または、あなたがすることができます
cat -n file1 file2 ....
IHTH
私の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
シェルターは正しい考えを持っていると思います。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