从数字1开始,如何在一个段落中的每一行前面添加相同的数字和空格,对于数字2和下一个段落相同.段落用空行分隔,文本文件中大约有50个段落,每个段落有2到30行.
这里
有一些文字更多的数字和文字
这里更多的文字
,这里是更多的文字
数量文本
1这里的一些文字
1个更多的数字和文字
这里有
2 个以上的文字2,这里有更多的文字
2个数字文字
这里的技巧是将段落视为记录,将行视为字段.
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)
新年快乐!
另一种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)