在文件开头添加序号

时间:2019-04-04 11:32:41

标签: bash

我有5个文件,我想在每个文件的开头添加序列号和制表符,但是第二个文件应该以第一个文件的最后一个数字开头,依此类推:

file1
line1
line2
....
line13

file2
line1
line2


file5
line1
line2

输出文件1

1  line1
........
13 line13

输出文件2

14 line1
15 line2 

依此类推

1 个答案:

答案 0 :(得分:4)

如果要连接文件和数字行,请使用cat

cat -n file1 file2 file3 file4 file5

如果要为每个输入文件创建一个单独的输出文件,请使用awk:

awk '{
  printf "%d\t%s\n",NR,$0 > ("output_"FILENAME)
}' file1 file2 file3 file4 file5

读取file1..5,对行编号并将其输出到output_file1..5。请注意,如果文件太多,则上述awk命令将失败,并显示诸如太多打开的文件描述符之类的错误。在这种情况下,使用以下命令将在输入文件更改时关闭前一个文件。

awk '
FILENAME!=f{close("output_"f);f=FILENAME}
{printf "%d\t%s\n",NR,$0 > ("output_"f)}
' file1 file2 file3 file4 file5