我具有以下内容:
NODE_1
port 1
description blah
port 2
description blah blah
NODE_2
port 1
description blah
port 2
description blah
NODE_3
port 1
port 2
NODE_4
port 1
port 2
NODE_5
port 1
port 2
NODE_6
port 1
description blahdy blah
port 2
description floop-a-doop
我正在尝试打印NODE的前三场比赛的比赛属性
awk 'BEGIN{count=0}
match($0,/NODE/,a)
{
if(RSTART != 0){
print "*******************************"
for (i in a)
print i"-->"a[i]
count++;
print "count-->"count;
print "*******************************"
}
if (count >= 3)
{
exit
}
}' awksampledata5.txt
输出为
NODE_1
*******************************
0start-->1
0length-->4
0-->NODE
count-->1
*******************************
NODE_2
*******************************
0start-->1
0length-->4
0-->NODE
count-->2
*******************************
NODE_3
*******************************
0start-->1
0length-->4
0-->NODE
count-->3
*******************************
我不希望打印NODE_1,NODE_2和NODE_3。但是我不知道它是如何打印的。
答案编辑代码:
$ awk 'BEGIN{count=0}
match($0,/NODE/,a){
if(RSTART != 0){ <-- this matters new lines matters.
print "*******************************"
for (i in a)
print i"-->"a[i]
count++;
print "count-->"count;
print "*******************************"
}
if (count >= 3)
{
exit
}
}' awksampledata5.txt
*******************************
0start-->1
0length-->4
0-->NODE
count-->1
*******************************
*******************************
0start-->1
0length-->4
0-->NODE
count-->2
*******************************
*******************************
0start-->1
0length-->4
0-->NODE
count-->3
*******************************
答案 0 :(得分:0)
换行很重要。这个:
match($0,/foo/)
{ bar() }
与以下两个都不相同:
match($0,/foo/) { bar() }
match($0,/foo/) {
bar()
}
第一个脚本说
If "foo" exists in $0 then print the current record.
Call bar().
其他2个人说:
If "foo" exists in $0 then call bar().