在我的输入文件中,每次出现表达式"AAA“之后,我必须打印81行。我该怎么做呢?
发布于 2013-06-25 04:42:39
以下习惯用法描述了如何在给定特定模式的情况下选择要匹配的记录范围:
a)打印某一模式的所有记录:
awk '/pattern/{f=1}f' fileb)打印某一模式后的所有记录:
awk 'f;/pattern/{f=1}' filec)打印某一模式后的第N条记录:
awk 'c&&!--c;/pattern/{c=N}' filed)打印除第N条记录外的每条记录:
awk 'c&&!--c{next}/pattern/{c=N}1' filee)在某种模式后打印N条记录:
awk 'c&&c--;/pattern/{c=N}' filef)打印除N条记录外的每条记录:
awk 'c&&c--{next}/pattern/{c=N}1' fileg)打印来自某个模式的N条记录:
awk '/pattern/{c=N}c&&c--' file我在适当的地方将变量名从“找到”的"f“改为"count”的"c“,因为这更能表达变量的实际内容。
所以,你需要上面的"e“:
awk 'c&&c--;/AAA/{c=81}' file发布于 2013-06-25 03:36:38
使用grep有一种非常简单的方法:
grep -A 81 AAA input_file从手册页:
上下文计数,--after- -A = NUM
在匹配行之后打印尾随上下文的NUM行。在连续的匹配组之间放置一行包含组分隔符(--)的行。如果使用-o或--only-matching选项,则不会产生任何影响,并会给出警告。
发布于 2013-06-25 03:36:49
在表达式后添加{c=81;next}c-->0:
awk '/AAA/{c=81;next}c-->0' somefilehttps://stackoverflow.com/questions/17283567
复制相似问题