Показывать три столбца после правила совпадения в цикле - PullRequest
0 голосов
/ 17 октября 2018

Возможно ли с помощью 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" ($(n+1), $(n+2) и $(n+3)).

ожидаемый результат:

number1 name a 1 2 3 
number1 name b 1 2 3
number1 name c 1 2 3
number2 name a 1 2 3
number2 name b 1 2 3
number3 name a 1 2 3
....
number5 name c 1 2 3

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете попробовать следующее:

awk '{for(i=3;i<=NF;++i) if ($i == "eq") print $1,$2,$(i+1),$(i+2),$(i+3),$(i+4)}' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...