【发布时间】:2018-02-14 17:05:41
【问题描述】:
希望有人可以帮助我。
我有大量行数不同的文件。 我想在文件中添加新行,直到特定行,比如 6。
Infile.txt
text1
text2
text3
我想要的输出文件是
输出文件.txt
text1
text2
text3
\n
\n
\n
【问题讨论】:
-
无论行数和内容如何,您都需要在文件中添加 6 个空行吗?或者你这样做有什么逻辑吗?
希望有人可以帮助我。
我有大量行数不同的文件。 我想在文件中添加新行,直到特定行,比如 6。
Infile.txt
text1
text2
text3
我想要的输出文件是
输出文件.txt
text1
text2
text3
\n
\n
\n
【问题讨论】:
恕我直言,处理这个问题的最清晰和最明显的方法是简单地从最后一个行号加 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
$
但是恕我直言,这是为了简洁而牺牲清晰度,不值得。
【讨论】:
短awk解决方案:
awk -v r=6 'END{ while((r--)-NR>0) print "" }1' file
-v r=6 - 变量 r 表示总行数/最大行数【讨论】:
(r--)-NR > 0)
在 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
【讨论】: