当前位置:  开发笔记 > 编程语言 > 正文

awk编号每个段落中的所有行,每个段落增加一个

如何解决《awk编号每个段落中的所有行,每个段落增加一个》经验,为你挑选了2个好方法。

从数字1开始,如何在一个段落中的每一行前面添加相同的数字和空格,对于数字2和下一个段落相同.段落用空行分隔,文本文件中大约有50个段落,每个段落有2到30行.

这里
有一些文字更多的数字和文字

这里更多的文字
,这里是更多的文字
数量文本

1这里的一些文字
1个更多的数字和文字

这里有
2 个以上的文字2,这里有更多的文字
2个数字文字



1> Kaz..:

这里的技巧是将段落视为记录,将行视为字段.

awk 'BEGIN { RS="\n\n"; FS="\n" }
     { for (i = 1; i <= NF; i++)
         print FNR, $i;
       print "" }' < in > out

新年快乐!


我会使用`RS =""`以便任意数量的空行分隔记录.

2> karakfa..:

另一种awk选择,计算空行,没有循环.

$ awk '/^$/{c++;print;next} {print c+1, $0}' text  

1 some text here
1 more numbers and text

2 more text here
2 and here is more text
2 number text

这样可以保留空行数

$ awk '/^$/{e=1;print;next} e{c++} {print c+1,$0;e=0}' text2

1 some text here
1 more numbers and text 


2 more text here
2 and here is more text
2 number text

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有