如何将.c文件复制到编号的列表

时间:2012-09-21 12:22:43

标签: bash unix

我只想将我的.c文件复制到行号列表文件中。基本上从我的.c文件生成.prn文件。我很难找到正确的bash命令来执行此操作。

4 个答案:

答案 0 :(得分:4)

您的意思是nl吗?

nl -ba filename.c

-ba表示对所有行进行编号,而不仅仅是非空行。

答案 1 :(得分:3)

awk '{print FNR ":" $0}' file1 file2 ...

是一种方式。

FNR是FileNumberRecord(每个文件的当前行号)。

您可以根据需要更改“:”。

$0表示“整个输入行”

或者你可以做到

 cat -n file1 file2 ....

IHTH

答案 2 :(得分: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

答案 3 :(得分:2)

我认为贝壳有正确的想法。但是,如果您的要求输出写入具有prn扩展名的文件,则这是一种方式:

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