如果匹配打印Nextline的第4和第5值,我想匹配第4和第5值的模式。
以下是输入文件
猫
CL3-A3-2 0 0 17496 2851 P-VOL PAIR ASYNC 0 2850 -
CL3-C2-5 0 0 66319 2850 S-VOL PAIR ASYNC 0 2851 -
CL3-A3-2 0 1 17496 2852 P-VOL PAIR ASYNC 0 2851 -
CL3-C2-5 0 1 66319 2851 S-VOL PAIR ASYNC 0 2852 -
CL3-A3-2 0 2 17496 2853 P-VOL PAIR ASYNC 0 2852 -
CL3-C2-5 0 2 66319 2852 S-VOL PAIR ASYNC 0 2853 -
CL3-A3-2 0 6 17496 2857 P-VOL PAIR ASYNC 0 2857 -
CL3-C2-5 0 3 66319 2857 S-VOL PAIR ASYNC 0 2857 -
CL3-A3-2 0 6 47496 2857 P-VOL PAIR ASYNC 0 2857 -
CL3-C2-5 0 3 18496 2857 S-VOL PAIR ASYNC 0 2857 -
对于Ex:我匹配17496和2857,如果搜索模式匹配一行,需要使用awk或sed获取直接下一行的第4和第5个值。
输出就像
66319 2857
在匹配模式
时减少重复由于
答案 0 :(得分:2)
这很简单:
lastMatched {
print $4, $5;
lastMatched = 0;
}
$4 == 17496 && $5 == 2857 {
lastMatched = 1;
}
答案 1 :(得分:1)
awk '{if (flag==1) {print $4,$5; flag=0}}
{if (($4==17496)&&($5==2857))flag=1}' inputfile
如果您只需要一个匹配并且想要在之后终止,只需添加退出。
awk '{if (flag==1) {print $4,$5; exit}}
{if (($4==17496)&&($5==2857)) flag=1}' inputfile
答案 2 :(得分:0)
如果我看到匹配,我会举起一个标志,如果标志被抬起,我会降低标志并打印数据。
% awk 'p==1{p=0;print $4, $5} $4==17496&&$5==2857{p=1}' your.data
66319 2857
%
语句的顺序至关重要,如果我先设置标志然后检查它,我会为同一行打印$4
和$5
...
答案 3 :(得分:0)
我刚用下面的行修好了
nawk '/'$4' '$5'/{getline;print $4,$5}'