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

use*_*565 1 awk gawk

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

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

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

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

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

Kaz*_*Kaz 5

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

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

新年快乐!

  • 我会使用`RS =""`以便任意数量的空行分隔记录. (2认同)

kar*_*kfa 5

另一种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
Run Code Online (Sandbox Code Playgroud)

这样可以保留空行数

$ 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
Run Code Online (Sandbox Code Playgroud)