2017-09-06 51 views
1

希望有人能帮助我。添加新行至特定行

我有大量的行数不同的文件。 我想在将文件添加新线达特定行,说6

Infile.txt

text1 
text2 
text3 

该出的文件,我想已经是

Outfile.txt

text1 
text2 
text3 
\n 
\n 
\n 
+0

无论行数和内容如何,​​您需要将6个空行添加到文件中?或者你有这样的逻辑吗? – SriniV

回答

3

AWK溶液:

awk -v r=6 'END{ while((r--)-NR>0) print "" }1' file 
  • -v r=6 - 变量r指示行
+0

如果您确信数据可能不是问题,但要小心数据文件的数量已超过所需的行数 - while循环将是无限的。 (也许更好地比较'(r - ) - NR> 0') – jas

+0

@jas,对于这种情况 - 是的,编辑,谢谢 – RomanPerekhrest

1

在awk的END块,内置可变NR将包含文件的最后一行的行号。从那里可以很容易地打印所需数量的附加空行。

$ awk -v lines=6 '1; END {for (i=NR; i<lines; ++i) print ""}' file 
text1 
text2 
text3 



$ awk -v lines=6 '1; END {for (i=NR; i<lines; ++i) print ""}' file | wc -l 
6 
1

IMHO最清晰和最明显的方法来处理的总/最大数目这是简单的循环最后行号加1行的目标数量:

$ seq 3 | awk -v n=6 '{print} END{for (i=NR+1; i<=n; i++) print ""}' 
1 
2 
3 



$ 

您还可以,如果你想保存的变量倒计时:

$ seq 3 | awk -v n=6 '{print} END{while (n-- > NR) print ""}' 
1 
2 
3 



$ 

,但恕我直言,这就是牺牲清晰度赞成简洁和不值得。