如何给段落编号

如何给段落编号

我知道我已经问过这个问题,但我没有得到有效的答案。那么请问有人可以回答我的问题吗?

我有一个文本文件,其中包含文本段落,每个段落由一个空行分隔。现在我需要用自己的编号对每个段落进行编号。因此,第一段的页边距中将有数字 1,第二段的页边距中将有数字 2,第三段的页边距中将有数字 3,等等。我知道这似乎很明显,但我认为我的上一篇文章可能没有清楚地传达信息。

所以我需要一个可以完成这项工作的 Linux 命令。然而,我的问题是命令需要简单。我的意思是没有复杂的 Perl 脚本或任何难以理解的代码块。

我正在寻找的是一个可以轻松执行任务的简单命令。或者,如果需要编写脚本,请使其简单并解释代码,以便从未使用过 Perl 或 Bash 脚本的人仍然可以将其应用到他们的代码中并理解他们在做什么。

很抱歉,如果这个问题可能会显得不礼貌。我们将非常感谢您的回复,因为网上没有任何关于此主题的内容。

答案1

全部获得自https://superuser.com/a/916248/151431

您可以使用perl

$ perl -00pe 's/^/$./' file
  • -00打开段落模式,其中“行”由连续的 \n\n 定义。
  • -p告诉 perl 在运行由 给出的脚本后打印输入文件的每一行-e
  • s/^/$./(^)将用当前“行”(段落)编号替换行的开头$.

您可以使用awk

$ awk -v RS='\n\n' -vORS='\n\n' '{print NR$0}' file | head -n -2 
  • -v RS='\n\n'将 awk 的记录分隔符设置为连续的换行符。与 Perl 的段落模式一样,这使得它将段落视为“行”。然后我们告诉它打印当前行号(NR)和当前“行” $0
  • -vORS=将输出记录分隔符设置为连续的换行符,以便在输出中段落也由空行分隔。
  • head -n -2以避免在输出末尾添加两个空行。

相关内容