【问题标题】:Add new lines up to specific row将新行添加到特定行
【发布时间】:2018-02-14 17:05:41
【问题描述】:

希望有人可以帮助我。

我有大量行数不同的文件。 我想在文件中添加新行,直到特定行,比如 6。

Infile.txt

text1 
text2
text3 

我想要的输出文件是

输出文件.txt

text1 
text2
text3 
\n 
\n 
\n

【问题讨论】:

  • 无论行数和内容如何,​​您都需要在文件中添加 6 个空行吗?或者你这样做有什么逻辑吗?

标签: awk sed


【解决方案1】:

恕我直言,处理这个问题的最清晰和最明显的方法是简单地从最后一个行号加 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



$

但是恕我直言,这是为了简洁而牺牲清晰度,不值得。

【讨论】:

    【解决方案2】:

    awk解决方案:

    awk -v r=6 'END{ while((r--)-NR>0) print "" }1' file
    
    • -v r=6 - 变量 r 表示总行数/最大行数

    【讨论】:

    • 如果您确定数据可能不是问题,但请注意已经超过所需行数的数据文件 --- while 循环将是无限的。 (也许更好地比较(r--)-NR &gt; 0
    【解决方案3】:

    在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多