我在 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