首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印包含11行的每块数据

打印包含11行的每块数据
EN

Stack Overflow用户
提问于 2015-08-20 00:35:21
回答 2查看 64关注 0票数 1

我得到了一个文件,其中的文本分为11或10行(每个块由一个新行分隔)。我只想提取11行块。是否有sed命令允许我指定11种模式(每一行都是这样),并且只有在完全匹配的情况下才打印它们(整个块)?

干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-20 01:23:58

我知道您要求sed,但是GNU awk使这个任务变得很容易:

代码语言:javascript
复制
awk -F'\n' -v RS= 'NF==11' file

-v RS=告诉awk使用空行作为记录分隔符。

在awk中,每个记录被划分为字段。-F'\n'告诉awk使用换行符作为字段分隔符。

NF==11告诉awk只有在记录由11行组成时才打印记录。

票数 4
EN

Stack Overflow用户

发布于 2015-08-20 06:53:19

这可能对您有用(GNU sed):

代码语言:javascript
复制
sed -nr ':a;N;$G;s/\n+$//;Ta;s/[^\n]+/&/11p' file

使用-n类grep选项和-r扩展regexp选项。

将行追加到模式空间,直到出现空行为止。如果模式空间包含11 (或更多)行,则打印它。

注意:在边缘情况下,最后一行可能是空的,也可能不是空的,请添加换行符。

仅适用于11行:

代码语言:javascript
复制
sed -nr ':a;N;$G;s/\n+$//;Ta;/^([^\n]+\n){10}[^\n]+$/p' file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32107776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档