处理 unix 文件中的段落

处理 unix 文件中的段落

我在 Linux 中创建了包含三个段落的文本文件。所以现在我想在显示文件内容的同时在结果中显示每个段落的行号。

我的文件的内容是这样的。

      以下是帮助您浏览百科全书的内容导航系统。它们作为搜索的替代方案。

      以下是内容导航系统,可帮助您浏览百科全书。它们作为搜索的替代方案。

      以下是内容导航系统,可帮助您浏览百科全书。它们作为搜索的替代方案。

现在我想将结果打印为

1 以下是内容......(第一段)

2 以下内容为......(第二段)等等。

文件中的每个段落都包含一个行间隙

我还需要使用另一个命令仅打印上述文件中的最后一段。

我用的是ubuntu。

答案1

珀尔,段落模式 -00,打印输入行-p加上带有数字的自定义前缀。

% (echo hi; echo; echo there) | perl -00 -pe 'print ++$x, " "'

最后一段是

% (echo hi; echo; echo there) | perl -00 -ne '$l=$_; END { print $l }'

答案2

您可以用来awk添加段落编号。假设你的文件被称为input你可以这样做:

awk 'BEGIN {para=1} !/^\s*$/ {printf "%d %s\n", para, $0; para+=1;next};1' input

这将保留我们已经看到的段落数的计数器,每次出现非空行时,它都会将当前计数器添加到前面,然后递增计数器。

要获取最后一段,您可以类似地使用 awk,假设末尾可能有您不想要的空行:

awk '!/^\s*$/ {line=$0} END{print line}' input

相关内容