在循环中的匹配规则后显示三列

时间:2018-10-17 09:48:00

标签: regex awk

awk是否可以在与子字符串“ eq”匹配的列之后打印三列?

我有以下文件变量和值

number1 name eq a 1 2 3 4 5 eq b 1 2 3 4 eq c 1 2 3 4 5 
number2 name eq a 1 2 3 4 5 eq b 1 2 3 4
number3 name eq a 1 2 3 4 5 eq b 1 2 3 4 eq c 1 2 3 4 5 
number4 name eq a 1 2 3 4 5
number5 name eq a 1 2 3 4 5 eq b 1 2 3 4 eq c 1 2 3 4 5 
....

如果awk在某一列中找到子字符串“ eq”(请说$n),则打印$1$2,并在找到“ eq”之后打印三列({{1 }},$(n+1)$(n+2))。

预期输出:

$(n+3)

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

awk '{for(i=3;i<=NF;++i) if ($i == "eq") print $1,$2,$(i+1),$(i+2),$(i+3),$(i+4)}' file