awk-图案之间的打印-第一行之后的两行
我有一个这样的文件awk-图案之间的打印-第一行之后的两行,awk,pattern-matching,Awk,Pattern Matching,我有一个这样的文件 y z pattern1 line 1 1 1 patern2 x k 我想做的是在两种模式之间打印内容,并有以下限制 避免打印图案 跳过第一个图案后的下一行 这意味着我的输出文件应该如下所示 1 1 1 到目前为止,我能够在模式之间打印,通过使用 awk '/pattern1/{flag=1;next}/pattern2/{flag=0}flag' file 你知道怎么做吗?试试这个: awk '/pattern1/{i=1;next}/patern2/{i=0}{i
y
z
pattern1
line
1
1
1
patern2
x
k
我想做的是在两种模式之间打印内容,并有以下限制
1
1
1
到目前为止,我能够在模式之间打印,通过使用
awk '/pattern1/{flag=1;next}/pattern2/{flag=0}flag' file
你知道怎么做吗?试试这个:
awk '/pattern1/{i=1;next}/patern2/{i=0}{if(i==1){i++;next}}i' File
试试这个:
awk '/pattern1/{i=1;next}/patern2/{i=0}{if(i==1){i++;next}}i' File
当pattern1匹配时,可以记录起始行号:
awk '/pattern1/{s=NR+1;p=1;next}/pattern2/{p=0}p&&NR>s' file
如果没有与
模式1和模式2匹配的行,则可以保存下一个,当模式1匹配时,您可以记录起始行号:
awk '/pattern1/{s=NR+1;p=1;next}/pattern2/{p=0}p&&NR>s' file
$ awk '/pattern1/,/patern2/{i++} /patern2/{i=0} i>2' file
1
1
1
如果没有与pattern1和pattern2匹配的行,则可以保存next
$ awk '/pattern1/,/patern2/{i++} /patern2/{i=0} i>2' file
1
1
1
在模式之间
增量i
,在2
记录之后开始打印(i>2
),并在结束标记处重置i
在patterns
incrementi
之间,在2
记录开始打印(i>2
)之后,在结束标记处重置i
。请参见此处(新打印):@JamesBrown:实际上我从那里得到了,但我似乎无法根据我的需要修改它……如果你同意管道输出,你可以使用不同的方法,比如awk'NR>1'
,sed'1d'
,tail-n+2
等等,请看这里(最新版本):@JamesBrown:实际上我是从那里得到的,但我似乎无法根据我的需要修改它……如果你同意使用管道输出,你可以使用不同的方法,比如awk'NR>1'
,sed'1d'
,tail-n+2
等