[英]How to print 2 consecutive lines after a pattern in file using awk and the matched line itself
在以下文本文件中,
####PATTERN#######
#Line1
#Line2
#Line3
#Line4
####PATTERN#######
#Line1
#Line2
#Line3
#Line4
#Line5
####PATTERN#######
#Line1
#Line2
#Line3
#Line4
我想提取匹配的行和接下来的2行。 输出应为:
####PATTERN#######
#Line1
#Line2
####PATTERN#######
#Line1
#Line2
####PATTERN#######
#Line1
#Line2
如何实现呢?
谢谢,亚历克斯
用awk
,按要求
awk '/PATTERN/{c=3}c&&c--' file
要么
awk '/PATTERN/{c=3}c-->0' file
但是使用grep
更容易:
grep -A2 file
使用以下awk:
awk '/PATTERN/{s=1} s++ < 4' file
####PATTERN#######
#Line1
#Line2
####PATTERN#######
#Line1
#Line2
####PATTERN#######
#Line1
#Line2
有一种使用grep的简单方法。 您将在上下文之间找到--
线,并可以使用反向匹配-v
删除它们。 请参阅grep man page
的文档。
grep -A2 "PATTERN" file | grep -v -- "^--$"
使用awk:
awk '/PATTERN/{c=NR+2}(NR<=c){print}' file
使用sed:
sed '/PATTERN/,+2!d' file
Perl单线
perl -ne 'print if (/PATTERN/ and $p=2) .. not $p--' file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.