首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配模式后打印特定行数

匹配模式后打印特定行数
EN

Stack Overflow用户
提问于 2013-06-25 03:31:54
回答 5查看 6.3K关注 0票数 8

在我的输入文件中,每次出现表达式"AAA“之后,我必须打印81行。我该怎么做呢?

EN

回答 5

Stack Overflow用户

发布于 2013-06-25 04:42:39

以下习惯用法描述了如何在给定特定模式的情况下选择要匹配的记录范围:

a)打印某一模式的所有记录:

代码语言:javascript
复制
awk '/pattern/{f=1}f' file

b)打印某一模式后的所有记录:

代码语言:javascript
复制
awk 'f;/pattern/{f=1}' file

c)打印某一模式后的第N条记录:

代码语言:javascript
复制
awk 'c&&!--c;/pattern/{c=N}' file

d)打印除第N条记录外的每条记录:

代码语言:javascript
复制
awk 'c&&!--c{next}/pattern/{c=N}1' file

e)在某种模式后打印N条记录:

代码语言:javascript
复制
awk 'c&&c--;/pattern/{c=N}' file

f)打印除N条记录外的每条记录:

代码语言:javascript
复制
awk 'c&&c--{next}/pattern/{c=N}1' file

g)打印来自某个模式的N条记录:

代码语言:javascript
复制
awk '/pattern/{c=N}c&&c--' file

我在适当的地方将变量名从“找到”的"f“改为"count”的"c“,因为这更能表达变量的实际内容。

所以,你需要上面的"e“:

代码语言:javascript
复制
awk 'c&&c--;/AAA/{c=81}' file
票数 20
EN

Stack Overflow用户

发布于 2013-06-25 03:36:38

使用grep有一种非常简单的方法:

代码语言:javascript
复制
grep -A 81 AAA input_file

从手册页:

上下文计数,--after- -A = NUM

在匹配行之后打印尾随上下文的NUM行。在连续的匹配组之间放置一行包含组分隔符(--)的行。如果使用-o或--only-matching选项,则不会产生任何影响,并会给出警告。

票数 7
EN

Stack Overflow用户

发布于 2013-06-25 03:36:49

在表达式后添加{c=81;next}c-->0

代码语言:javascript
复制
awk '/AAA/{c=81;next}c-->0' somefile
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17283567

复制
相关文章

相似问题

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