【问题标题】:how to repeat line numbers in a file separated by an empty line [closed]如何在由空行分隔的文件中重复行号[关闭]
【发布时间】:2015-08-29 07:49:31
【问题描述】:

如果我的文件中有空行,我想用 1 重新开始计数。

我的文件是这样的: 猫测试.txt

333|111|222|333| 222|111|333|222|

我正在使用 cat test.txt | sed 's/|/\n/g' |荷兰语 输出: 1 333 2 111 3 222 4 333

5 222 6 111 7 333

我想要的是在空行之后再次从 1 开始计数。 所需的输出: 1 333 2 111 3 222 4 333

1 222 2 111 3 333

请帮忙?

【问题讨论】:

    标签: line-numbers


    【解决方案1】:

    这个任务在 'awk' 或者它的一个克隆 gawk、nawk 中是相当微不足道的。

    创建一个包含内容的脚本 linerecount.awk:

    /^$/ { lineno=0; next}
         { print ++lineno, $0}
    

    第一行显然重置了行号并跳到下一行。 第二行增加行号,打印它,打印行。

    使用 gawk -f linerecount.awk 应用到任何你想要的东西。

    输入:

    $ cat input.txt
    First line
    Second line
    Third line
    
    Second part, First line
    Second line
    Third line
    
    Final part, First line
    Second line
    

    输出:

    $ gawk -f linerecount.awk < input.txt
    1 First line
    2 Second line
    3 Third line
    1 Second part, First line
    2 Second line
    3 Third line
    1 Final part, First line
    2 Second line
    

    【讨论】:

    • 可以用nl命令来实现吗?
    • 您仍然需要 awk 来对文件进行分区。
    • 彼得请具体说明。我仍然无法想象你的答案
    • 附言。我尝试使用 nl,使用空行作为节分隔符,但它没有重新开始编号,它只是停止了?!
    猜你喜欢
    • 2016-07-08
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多